2010-03-18 122 views
5

我使用「密碼之力MD5加密」,以產生例如「123」我得到一個哈希Apache的htpasswd的哈希:如何產生像的htpasswd使用Java

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

使用MD5摘要:123 => 202cb962ac59075b964b07152d234b70

請告訴我怎樣才能像用java 由於Apache的htpasswd的哈希值。

回答

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

3

我發現有人在java &中解決了這個問題,併發布了一個啤酒許可證。遲到總比不到好,對吧?它已經有可能自2007年以來,所以我會感到驚訝,如果您還沒有最終發現它一些時間要求在2010年

「渣口人:喬納森修道院,[email protected]」後

「MD5Crypt.java是Poul-Henning Kamp原始FreeBSD 基於MD5的哈希算法的端口,其他方法支持該算法的Apache HTTPd服務器變體 。」

「結果字符串將在形式 '$ APR1 $ <鹽> $ <散列混亂>'」

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

0

Md5Crypt是你在找什麼。它實現了使用的迭代(1000倍Apache htpasswd algorithms

Apache的特定算法的隨機32位的各種組合的MD5摘要和密碼

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