2010-03-18 14 views
5

io uso "crittografia Forza MD5 della password" in htpasswd per generare un hash per esempio '123' ottengo:come generare un hash come htpasswd di Apache utilizzando Java

uso htpasswd: 123 => $ apr1 $ kaTbKaLO $ ewJXRZAKpjaxK4thy2jOp/

uso MD5: 123 => 202cb962ac59075b964b07152d234b70

prego di dirmi come posso generare un hash come il htpasswd Apache utilizzando Java Grazie.

risposta

6

password in Apache .htpasswd file vengono codificati utilizzando un salt. Se vuoi generare queste password usando Java dovrai fare lo stesso. This site ha una spiegazione dell'algoritmo sale/hashing utilizzato per i file .htpasswd di Apache; Sto cercando un vero algoritmo che potresti usare e modificherò la mia risposta dopo averla trovata.

EDIT: Sembra come se fosse stato chiesto prima, proprio qui su SO:

Programmaticly building 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

3

Ho trovato dove qualcuno ha affrontato questo in Java & 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, [email protected]"

"MD5Crypt.java è un porto di Poul-Henning Kamp originale FreeBSD Algoritmo di hash MD5, con metodi aggiuntivi per supportare la variante del server HTTPd Apache di questo algoritmo."

"La stringa risultante sarà in forma '$ apr1 $ <sale> $ < hash pasticcio >'"

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

0

md5crypt è quello che stai cercando. Esso implementa l'algoritmo Apache htpasswd algorithms

Apache-specifico utilizzando un iterate (1.000 volte) digest MD5 di varie combinazioni di un casuale a 32 bit sale e la password di .

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