Java MD5 哈希函数给出不正确的哈希值

标签 java md5

我遇到了 Java md5 散列函数未返回正确值的问题。对于大多数值,它确实会返回正确的值,但我发现了一个输出不正确的输入示例。

我的代码是:

public String hash(String pass) throws Exception
{
    encr = MessageDigest.getInstance("MD5");
    return new BigInteger(1, encr.digest(pass.getBytes())).toString(16);
}

这会为我尝试过的大多数示例返回正确答案,例如 hash("beep") -> "1284e53a168a5ad955485a7c83b10de0", hash("hello") -> "5d41402abc4b2a76b9719d911017c592"等...

然后问题来了:hash("dog") -> "6d80eb0c50b49a509b49f2424e8c805"而不是 "06d80eb0c50b49a509b49f2424e8c805"我从几个在线 md5 生成器以及 psql md5 生成器(我的鳕鱼正在与之交互)。

我非常感谢任何人能对此有所启发, 谢谢。

最佳答案

默认情况下它不包含前导零,但您可以轻松地自己填充它们:

String md5 = new BigInteger(1, encr.digest(pass.getBytes())).toString(16);
return String.format("%32s", md5).replace(' ', '0');

关于Java MD5 哈希函数给出不正确的哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22455173/

相关文章:

java - 如何制作大写的 BottomNavigationView 菜单?

java - java可序列化对象可以在不同的类加载器之间传递吗?

HTTP 摘要认证 MD5 冲突

php - 相同的二进制文件产生不同的 md5

linux - 比较两个目录的相等性

java - 如何使用 Spring-MVC 创建 "Update"/"Edit"的 SQL 语法?

java - Java RMI 是否使用服务器资源?

iphone - iOS : is an MD5 hash considered "encryption" when submitting to the app store?

Python:使用 Hashlib 生成文件的 MD5 哈希

java - Spring 安全。 session 不稳定