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; }}