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

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

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

使用MD5摘要:123 => 202cb962ac59075b964b07152d234b70

请告诉我如何使用java生成像apache htpasswd这样的哈希谢谢。

Apache .htpasswd文件中的密码使用salt进行编码。 如果要使用Java生成这些密码,则需要执行相同的操作。 该站点解释了用于Apache的.htpasswd文件的salt / hashing算法; 我正在寻找一个你可以使用的实际算法,并在找到一个后编辑我的答案。

编辑 :看起来之前有人问过,就在这里SO:

以编程方式构建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

我发现有人在java中解决了这个问题,并用啤酒许可证发布了它。 迟到总比不到好,对吧? 它可能是自2007年以来一直存在,所以如果你在2010年询问后最终没有找到它,我会感到惊讶。

“Java Port By:Jonathan Abbey,jonabbey @ aarlut.utexas.edu”

“MD5Crypt.java是Poul-Henning Kamp最初基于FreeBSD MD5的哈希算法的一个端口,还有其他方法可以支持这种算法的Apache HTTPd服务器变体。”

“结果字符串的forms为’$ apr1 $ $ ‘”

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

Md5Crypt是你要找的。 它实现了Apache htpasswd算法

特定于Apache的算法,使用随机32位密码的各种组合的迭代( 1,000次 )MD5摘要。

import org.apache.commons.codec.digest.Md5Crypt; ... String enPasswd = Md5Crypt.md5Crypt("your plain password".getBytes()); String htpasswdContent = "your username:" + enPasswd; 
Interesting Posts