首页 文章

Java计算MD5哈希

提问于
浏览
10

http://www.anyexample.com/programming/java/java_simple_class_to_compute_md5_hash.xml中,给出了如何计算String的MD5哈希的示例 . 这导致20位十六进制字符串 . 根据http://en.wikipedia.org/wiki/MD5我希望有一个32位的十六进制字符串 . 我得到了相同的结果,例如在How can I generate an MD5 hash?中使用dac2009响应 .

为什么我得到的东西看起来像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);
}

摘自http://snippets.dzone.com/posts/show/3686

3 回答

  • 1

    我尝试了上面的例子,MungPass(“java”),我得到了一个32位的字符串,93f725a07423fe1c889f448b33d21f46 . 因为当你跑步时你得到了第一个正确的20个,我猜你只是在打印输出中丢失了一些东西?

  • 3

    你一定错过了什么 . 链接的代码很好 . 确保问题与其他地方无关,与显示结果有关 . 可能性:

    GUI中的

    • 太小了
      在具有多线程问题的控制台中

    • 通过一个即将被切断的网络包

    • 你将长度缩短为 20 而不是 0x20 ,即 32 .

  • 42

    改为使用 org.apache.commons.codec.digest.DigestUtils

    DigestUtils.md5Hex(str);
    

    这将给你32个字符串作为结果

相关问题