我正在寻找一个Java函数来生成/验证密码哈希值,如果crypt(3)
被激活,则会在sha512
将它们存储在Linux“/ etc / shadow”文件中时进行编码在“/etc/pam.d/common-password”中。
明文字符串“geheim”将转换为:
"$6$WoC532HB$LagBJ00vAGNGu8p9oeYDOSNZo9vTNTzOgPA.K0bJoiXfbcpj3jBuTkNwdzCrSNadRi8LanH1tH6tGGPPp/Lp3."
从http://www.akkadia.org/drepper/SHA-crypt.txt我明白,与MD5一样,它不仅仅是像DigestUtils
或Java MessageDigest
类这样的SHA哈希产生的,而是一种更具魔力的算法。 / p>
答案 0 :(得分:5)
我在这里找到了所有新crypt()算法的Java实现:ftp://ftp.arlut.utexas.edu/java_hashes/
答案 1 :(得分:1)
同样jBCrypt您可能会觉得有用。
在本文Modular Crypt Format or, a side note about a standard that isn’t中详细介绍了Crypt3格式。
答案 2 :(得分:0)
您提到的其他问题仅提供基于DES的传统crypt(3)方法和基于MD5的“$ 1 $”方法的链接。我需要检查使用基于SHA-1的“$ 5 $”方法的密码,甚至是基于SHA-512的“$ 6 $”方法。
基于此处意味着crypt(3)使用例如SHA-512但添加了一个salt值,并按照http://www.akkadia.org/drepper/SHA-crypt.txt
中的描述进行了多次迭代