package cn.iautos.mall.utils;
import java.io.FileInputStream;
import java.io.InputStream;
import java.security.MessageDigest;
import org.springframework.util.StringUtils;
public class CheckHashUtils {
public static String getHashByFile(String fileName) throws Exception{
return getMD5Checksum(fileName,null);
}
public static String getHashByStream(InputStream fis) throws Exception{
return getMD5Checksum(null,fis);
}
private static byte[] createChecksum(String filename,InputStream fis) throws Exception {
if(!StringUtils.isEmpty(filename)){
fis = new FileInputStream(filename);
}
byte[] buffer = new byte[1024];
MessageDigest complete = MessageDigest.getInstance("MD5");
int numRead;
do {
numRead = fis.read(buffer);
if (numRead > 0) {
complete.update(buffer, 0, numRead);
}
} while (numRead != -1);
fis.close();
return complete.digest();
}
private static String getMD5Checksum(String filename,InputStream fis) throws Exception {
byte[] b = createChecksum(filename,fis);
String result = "";
for (int i=0; i < b.length; i++) {
result += Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring( 1 );
}
return result;
}
}