java MD5應用

來源:互聯網
上載者:User

MD5(Message-Digest Algorithm 5(資訊-摘要演算法 5)),是一種演算法,不是加密,用於確保資訊傳輸完整一致。它是一種單向散列演算法,無法復原向的。訊息摘要可以看作未經處理資料的指紋,指紋不同則未經處理資料不同。MD5可以為任何檔案產生一個同樣獨一無二的“數位指紋”,如果任何人對檔案做了任何改動,其MD5值也就是對應的“數位指紋”都會發生變化。

通常步驟
調用MessageDigest對象的update和digest方法
流資料的特殊處理:
使用DigestInputStream或DigestOutputStream封裝MessageDigest對象,
調用DigestInputStream的read方法或DigestOutputStream的write方法讀寫完資料並將流關閉後,
再調用MessageDigest對象的digest方法,流中的資料就全被摘要處理了。

MessageDigest 類為應用程式提供資訊摘要演算法的功能,如 MD5 或 SHA 演算法。資訊摘要是安全的單向雜湊函數,它接收任意大小的資料,並輸出固定長度的雜湊值。

MessageDigest 對象開始被初始化。該對象通過使用 update 方法處理資料。任何時候都可以調用 reset 方法重設摘要。一旦所有需要更新的資料都已經被更新了,應該調用 digest 方法之一完成雜湊計算。

對於給定數量的更新資料,digest 方法只能被調用一次。在調用 digest 之後,MessageDigest 對象被重新設定成其初始狀態。

 

package com.study.messagedigest;import java.security.MessageDigest;/** * 數字摘要 *  * @ClassName: MessageDigestTest * @Description: TODO * @author 我夕 * @date 2012-5-17 */public class MessageDigestTest {/** * @param args * @throws Exception */public static void main(String[] args) throws Exception {// TODO Auto-generated method stubmd5();}/** *  * @return * @throws Exception */private static String md5() throws Exception {MessageDigest digest = MessageDigest.getInstance("MD5");digest.update("hello java !".getBytes("UTF-8"));byte[] result = digest.digest();//為了便於調試觀察,寫個方法將位元組數群組轉換成16進位System.out.println("訊息摘要內容:"+toHex(result));System.out.println("訊息摘要長度:" + result.length);return null;}// 位元組數組轉成16進位private static String toHex(byte[] buf) {StringBuffer stringBuffer = new StringBuffer();for (int i = 0; i < buf.length; i++) {int hi = ((buf[i] >> 4) & 0x0f);int lo = buf[i] & 0x0f;stringBuffer.append(hi > 9 ? (char) ((hi - 10) + 'a'): (char) (hi + '0'));stringBuffer.append(lo > 9 ? (char) ((lo - 10) + 'a'): (char) (lo + '0'));}return stringBuffer.toString();}}

經過測試大家會發現,不管要產生的訊息摘要的內容怎麼改變其長度都是16,都不會改變,也就是說MD5其產生的長度是固定的,額外其產生的訊息摘要只要其內容一發生變化其結果必然變了,這也就是md5可以很好的作為判斷一個檔案是否被他人篡改過。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.