2010-03-18 14 views
5

yo uso "Forzar cifrado MD5 de la contraseña" en htpasswd para generar un hash, por ejemplo, '123' me sale:cómo generar un hash como htpasswd de Apache usando java

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

uso MD5: 123 => 202cb962ac59075b964b07152d234b70

por favor dígame cómo puedo generar un hash como el Apache htpasswd usando java Gracias.

Respuesta

6

contraseñas en Apache Htpasswd archivos se codifican usando un salt. Si desea generar estas contraseñas usando Java, deberá hacer lo mismo. This site tiene una explicación del algoritmo de sal/hashing usado para los archivos .htpasswd de Apache; Estoy buscando un algoritmo real que podría usar y editaré mi respuesta después de encontrar una.

EDITAR: Parece que se ha pedido antes, aquí en la SO:

Programmaticly building htpasswd

Aquí está la documentación de Apache, junto con su código fuente:

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

Encontré que alguien ha abordado esto en java & lo lanzó con una licencia de cerveza. ¿Mejor tarde que nunca, cierto? Ha estado ahí, probablemente, desde el año 2007 por lo que me sorprendería si no hubiera encontrado finalmente un poco de tiempo después de preguntar en 2010.

"Java puerto Por: Jonathan Abbey, [email protected]"

"MD5Crypt.java es un puerto del algoritmo hash original FreeBSD basado en MD5 de Poul-Henning Kamp, con métodos adicionales para admitir la variante de servidor HTTPd Apache de este algoritmo".

"La cadena resultante estará en la forma '$ $ APR1 <sal> $ < hash desastre >'"

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

0

md5crypt es lo que busca. Implementa Apache htpasswd algorithms

algoritmo específica de Apache utilizando un iteradas (1000 veces) MD5 de diversas combinaciones de un sal aleatorio de 32 bits y la contraseña.

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