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