我在htpasswd中使用“强制MD5加密密码”来生成哈希,例如'123'我得到:
使用htpasswd:123 => $ $ APR1 $ kaTbKaLO ewJXRZAKpjaxK4thy2jOp /
使用MD5摘要:123 => 202cb962ac59075b964b07152d234b70
请告诉我如何使用java生成类似apache htpasswd的哈希值 感谢。
答案 0 :(得分:6)
Apache .htpasswd文件中的密码使用salt进行编码。如果要使用Java生成这些密码,则需要执行相同的操作。 This site解释了用于Apache的.htpasswd文件的salt / hashing算法;我正在寻找你可以使用的实际算法,并在找到答案后编辑我的答案。
编辑:看起来之前有人问过,就在SO:
Programmaticly building htpasswd
以下是Apache的文档及其源代码:
http://httpd.apache.org/docs/2.2/misc/password_encryptions.html
http://svn.apache.org/viewvc/apr/apr-util/branches/1.3.x/crypto/apr_md5.c?view=co
答案 1 :(得分:3)
我发现有人在java和&发布了啤酒许可证。迟到总比不到好,对吧?它可能是自2007年以来所有,所以如果你在2010年询问后最终没有找到它,我会感到惊讶。
“Java Port By:Jonathan Abbey,jonabbey @ aarlut.utexas.edu”
“MD5Crypt.java是Poul-Henning Kamp最初的FreeBSD的一个端口 基于MD5的哈希算法,支持其他方法 此算法的Apache HTTPd服务器变体。“
“结果字符串的格式为'$ apr1 $< salt> $< hashed mess>'”
答案 2 :(得分:0)
答案 3 :(得分:0)
Md5Crypt就是你要找的。它实现了Apache htpasswd algorithms
特定于Apache的算法,使用随机32位 salt 和密码的各种组合的迭代( 1,000次)MD5摘要
import org.apache.commons.codec.digest.Md5Crypt;
...
String enPasswd = Md5Crypt.md5Crypt("your plain password".getBytes());
String htpasswdContent = "your username:" + enPasswd;