您的位置:首页 > 编程语言 > Java开发

JAVA计算文件的MD5及SHA1等值

2014-05-15 10:49 573 查看
public class DigestUtil {

/**
*
* @param file
* @param algorithm 所请求算法的名称  for example: MD5, SHA1, SHA-256, SHA-384, SHA-512 etc.
* @return
*/
public static String getFileMD5(File file,String algorithm) {

if (!file.isFile()) {
return null;
}

MessageDigest digest = null;
FileInputStream in = null;
byte buffer[] = new byte[1024];
int len;

try {
digest = MessageDigest.getInstance(algorithm);
in = new FileInputStream(file);
while ((len = in.read(buffer, 0, 1024)) != -1) {
digest.update(buffer, 0, len);
}
in.close();
} catch (Exception e) {
e.printStackTrace();
return null;
}

BigInteger bigInt = new BigInteger(1, digest.digest());
return bigInt.toString(16);
}

/**
* 获取文件夹中文件的MD5值
*
* @param dirFile
* @param algorithm 所请求算法的名称  for example: MD5, SHA1, SHA-256, SHA-384, SHA-512 etc.
* @param listChild 是否递归子目录中的文件
* @return
*/
public static Map<String, String> getDirMD5(File dirFile,String algorithm, boolean listChild) {

if (!dirFile.isDirectory()) {
return null;
}

// <filepath,algCode>
Map<String, String> pathAlgMap = new HashMap<String, String>();
String algCode;
File files[] = dirFile.listFiles();

for (int i = 0; i < files.length; i++) {
File file = files[i];
if (file.isDirectory() && listChild) {
pathAlgMap.putAll(getDirMD5(file, algorithm, listChild));
} else {
algCode = getFileMD5(file, algorithm);
if (algCode != null) {
pathAlgMap.put(file.getPath(), algCode);
}
}
}
return pathAlgMap;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  md5 java sha1 算法