come generare un hash come quella di Apache htpasswd Utilizzo di Java
Domanda
io uso "crittografia Forza MD5 della password" in htpasswd per generare un hash per esempio '123' ottengo:
uso htpasswd: 123 => $ apr1 $ kaTbKaLO $ ewJXRZAKpjaxK4thy2jOp /
utilizzare MD5: 123 => 202cb962ac59075b964b07152d234b70
prego di dirmi come posso generare un hash come l'Apache htpasswd utilizzando Java Grazie.
Soluzione
Le password in Apache .htpasswd file vengono codificati utilizzando un sale . Se si desidera generare le password che utilizzano Java è necessario fare lo stesso. Questo sito ha una spiegazione del sale / algoritmo di hash utilizzato per Apache. file htpasswd; Sto cercando un algoritmo vero e proprio si potrebbe usare e sarà modificare la mia risposta dopo aver trovato uno.
Modifica : Sembra come se fosse stato chiesto prima, proprio qui su SO:
programmaticly costruzione htpasswd
Ecco la documentazione da Apache, insieme al loro codice sorgente:
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
Altri suggerimenti
Ho trovato in cui qualcuno è affrontato questo in Java e rilasciato con una licenza di birra-ware. Meglio tardi che mai, giusto? E 'stato lì probabilmente dal 2007, quindi mi sarei sorpreso se non avesse finalmente trovato un po' di tempo dopo aver chiesto nel 2010.
"Java Port da: Jonathan Abbazia, jonabbey@arlut.utexas.edu"
"MD5Crypt.java è un porto di FreeBSD originale di Poul-Henning Kamp algoritmo di hash MD5-based, con metodi aggiuntivi per sostenere il Apache HTTPd variante del server di questo algoritmo ".
"La stringa risultante sarà in forma '$ apr1 $
$ '"
md5crypt è quello che stai cercando. Implementa Apache htpasswd algoritmi
algoritmo di Apache-specifico utilizzando un iterata ( 1.000 volte ) digest MD5 di varie combinazioni di un casuale a 32 bit sale e Password .
import org.apache.commons.codec.digest.Md5Crypt;
...
String enPasswd = Md5Crypt.md5Crypt("your plain password".getBytes());
String htpasswdContent = "your username:" + enPasswd;