如何使用java生成像apache的htpasswd这样的哈希

时间:2010-03-18 10:56:35

标签: java .htpasswd

我在htpasswd中使用“强制MD5加密密码”来生成哈希,例如'123'我得到:

使用htpasswd:123 => $ $ APR1 $ kaTbKaLO ewJXRZAKpjaxK4thy2jOp /

使用MD5摘要:123 => 202cb962ac59075b964b07152d234b70

请告诉我如何使用java生成类似apache htpasswd的哈希值 感谢。

4 个答案:

答案 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>'”

ftp://ftp.arlut.utexas.edu/pub/java_hashes/

答案 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;