wie eine Hash wie Apache htpasswd mit Java generieren
Frage
i "Force-MD5-Verschlüsselung des Passworts" in htpasswd verwenden, um einen Hash zum Beispiel '123' i erhalten zu generieren:
Verwendung htpasswd: 123 => $ APR1 $ kaTbKaLO $ ewJXRZAKpjaxK4thy2jOp /
Verwendung MD5-Digest: 123 => 202cb962ac59075b964b07152d234b70
Bitte sagen Sie mir, wie kann ich einen Hash wie der Apache htpasswd mit Java generieren Danke.
Lösung
Passwörter in Apache .htpasswd-Dateien werden verschlüsselt unter Verwendung eines Salz . Wenn Sie diese Passwörter mit Hilfe von Java generieren möchten, müssen Sie das gleiche tun. Diese Seite eine Erklärung des Salzes / Hashing-Algorithmus hat für Apache verwendet. htpasswd-Dateien; Ich bin für einen tatsächlichen Algorithmus suchen Sie nutzen könnten und meine Antwort bearbeiten, nachdem ich einen finden.
Bearbeiten : Sieht aus wie es vor gefragt worden ist, hier auf SO:
programmaticly Gebäude htpasswd
Hier ist die Dokumentation von Apache, zusammen mit ihrer Quellcode:
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
Andere Tipps
Ich fand, wo jemand dies in Java in Angriff genommen und es mit einer Bier-ware-Lizenz veröffentlicht. Besser spät als nie richtig? Es war es wahrscheinlich seit 2007 so ich überrascht sein würde, wenn Sie es nicht schließlich hatte im Jahr 2010 nach zu fragen einige Zeit gefunden.
"Java Port: Jonathan Abbey, jonabbey@arlut.utexas.edu"
"MD5Crypt.java ist eine Portierung von Poul-Henning Kamp original FreeBSD MD5-Hash-Algorithmus basiert, mit zusätzlichen Methoden zur Unterstützung des Apache Server-Variante dieses Algorithmus. "
"Die resultierende Zeichenfolge wird in der Form '$ APR1 $
$ '"
md5crypt ist das, was Sie suchen. Es implementiert Apache htpasswd Algorithmen
Apache-spezifischer Algorithmus unter Verwendung eines iterierten ( 1.000-mal ) MD5-Digest von verschiedenen Kombinationen von einem zufälligen 32-Bit Salz und Passwort .
import org.apache.commons.codec.digest.Md5Crypt;
...
String enPasswd = Md5Crypt.md5Crypt("your plain password".getBytes());
String htpasswdContent = "your username:" + enPasswd;