java有没有计算文件SHA1值的包? 输入一个FILE,输出该文件SHA1值

Python023

java有没有计算文件SHA1值的包? 输入一个FILE,输出该文件SHA1值,第1张

刚刚好我自己也需要这个计算,看了一下,会不会是这样:

先正常算出SHA1的值(普通是以16进制串表示),将这个16进制串在内存中以字节流保存,然后Base64计算的结果不知道是不是就是Sha1-Digest的值。

经编程测试,确实如此。

给你个MD5的加密算法

package test

import java.security.MessageDigest

/**

* <p>Title: </p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) 2003</p>

* <p>Company: </p>

* @author unascribed

* @version 1.0

*/

public class StringUtil {

private final static String[] hexDigits = {

"0", "1", "2", "3", "4", "5", "6", "7",

"8", "9", "a", "b", "c", "d", "e", "f"}

/**

* 转换字节数组为16进制字串

* @param b 字节数组

* @return 16进制字串

*/

public static String byteArrayToHexString(byte[] b) {

StringBuffer resultSb = new StringBuffer()

for (int i = 0i <b.lengthi++) {

resultSb.append(byteToHexString(b[i]))

}

return resultSb.toString()

}

private static String byteToHexString(byte b) {

int n = b

if (n <0)

n = 256 + n

int d1 = n / 16

int d2 = n % 16

return hexDigits[d1] + hexDigits[d2]

}

public static String MD5Encode(String origin) {

String resultString = null

try {

resultString=new String(origin)

MessageDigest md = MessageDigest.getInstance("MD5")

resultString=byteArrayToHexString(md.digest(resultString.getBytes()))

}

catch (Exception ex) {

}

return resultString

}

public static void main(String[] args){

System.err.println(MD5Encode("a"))

}

}

在RFC 1321中,给出了Test suite用来检验你的实现是否正确:

MD5 ("") = d41d8cd98f00b204e9800998ecf8427e

MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661

MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72

MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0

MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b