我使用「密碼之力MD5加密」,以產生例如「123」我得到一個哈希Apache的htpasswd的哈希:如何產生像的htpasswd使用Java
使用htpasswd的:123 => $ APR1 $ kaTbKaLO $ ewJXRZAKpjaxK4thy2jOp/
使用MD5摘要:123 => 202cb962ac59075b964b07152d234b70
請告訴我怎樣才能像用java 由於Apache的htpasswd的哈希值。
我使用「密碼之力MD5加密」,以產生例如「123」我得到一個哈希Apache的htpasswd的哈希:如何產生像的htpasswd使用Java
使用htpasswd的:123 => $ APR1 $ kaTbKaLO $ ewJXRZAKpjaxK4thy2jOp/
使用MD5摘要:123 => 202cb962ac59075b964b07152d234b70
請告訴我怎樣才能像用java 由於Apache的htpasswd的哈希值。
密碼中的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
我發現有人在java &中解決了這個問題,併發布了一個啤酒許可證。遲到總比不到好,對吧?它已經有可能自2007年以來,所以我會感到驚訝,如果您還沒有最終發現它一些時間要求在2010年
「渣口人:喬納森修道院,[email protected]」後
「MD5Crypt.java是Poul-Henning Kamp原始FreeBSD 基於MD5的哈希算法的端口,其他方法支持該算法的Apache HTTPd服務器變體 。」
「結果字符串將在形式 '$ APR1 $ <鹽> $ <散列混亂>'」
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;
是的,我用MD5摘要但結果是由htpasswd的結果 – robinmag 2010-03-18 12:06:10
@robinmag不同:你需要鹽,並使用MD5 1000倍 - 見我的答案。 – Josh 2010-03-18 16:00:03