MD5 hash 哈希算法

package com.mkyong.test;
 
import java.io.FileInputStream;
import java.security.MessageDigest;
 
public class MD5CheckSumExample 
{
    public static void main(String[] args)throws Exception
    {
        MessageDigest md = MessageDigest.getInstance("MD5");
        FileInputStream fis = new FileInputStream("c:\\loging.log");
 
        byte[] dataBytes = new byte[1024];
 
        int nread = 0; 
        while ((nread = fis.read(dataBytes)) != -1) {
          md.update(dataBytes, 0, nread);
        };
        byte[] mdbytes = md.digest();
 
        //convert the byte to hex format method 1
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < mdbytes.length; i++) {
          sb.append(Integer.toString((mdbytes[i] & 0xff) + 0x100, 16).substring(1));
        }
 
        System.out.println("Digest(in hex format):: " + sb.toString());
 
        //convert the byte to hex format method 2
        StringBuffer hexString = new StringBuffer();
    	for (int i=0;i<mdbytes.length;i++) {
    		String hex=Integer.toHexString(0xff & mdbytes[i]);
   	     	if(hex.length()==1) hexString.append('0');
   	     	hexString.append(hex);
    	}
    	System.out.println("Digest(in hex format):: " + hexString.toString());
    }
}



public class MD5Hash {
  public ThreadLocal<MessageDigest> local = new ThreadLocal() {
    protected MessageDigest initialValue() {
      try {
        return MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) {
      }
      throw new IllegalStateException("MD5 Algorithm is not found");
    }
  };

  public long hash(byte[] value)
  {
    MessageDigest md5 = (MessageDigest)this.local.get();

    md5.reset();
    md5.update(value);
    byte[] bKey = md5.digest();
    long res = (bKey[3] & 0xFF) << 24 | 
      (bKey[2] & 0xFF) << 16 | 
      (bKey[1] & 0xFF) << 8 | bKey[0] & 0xFF;
    return res;
  }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章