在http://www.anyexample.com/programming/java/java_simple_class_to_compute_md5_hash.xml中提供了一个示例,说明如何计算字符串的MD5哈希值。这将导致一个20位十六进制字符串。根据http://en.wikipedia.org/wiki/MD5,我期望看到一个32位的十六进制字符串。例如在How can I generate an MD5 hash?中,使用dac2009的响应也得到了相同的结果。
为什么我得到的东西看起来像是MD5哈希,但实际上并不是?我无法想象得到的所有字符串都必须用12个前导零来填充。
编辑:一个代码示例
为什么我得到的东西看起来像是MD5哈希,但实际上并不是?我无法想象得到的所有字符串都必须用12个前导零来填充。
编辑:一个代码示例
public static String MungPass(String pass) throws NoSuchAlgorithmException {
MessageDigest m = MessageDigest.getInstance("MD5");
byte[] data = pass.getBytes();
m.update(data,0,data.length);
BigInteger i = new BigInteger(1,m.digest());
return String.format("%1$032X", i);
}