<-
Apache > Servidor HTTP > Documentación > Versión 2.5 > Documentación diversa

Formatos de contraseña

Idiomas disponibles:  en  |  es  |  fr 

Notas sobre los formatos de encriptación generados y comprendidos por Apache.

Consulte también

top

Autenticación Básica

Hay cinco formatos que Apache reconoce para contraseñas de autenticación-básica. Tenga en cuenta que no todos los formatos funcionan en todas las plataformas:

bcrypt
"$2y$" + el resultado del algoritmo crypt_blowfish. Vea el fichero código fuente de APR crypt_blowfish.c para más detalles sobre este algoritmo.
MD5
"$apr1$" + el resultado de un algoritmo específico-de-Apache usando una digest MD5 iterado (1.000 veces) de varias combinaciones aleatorias de un valor salt de 32-bit y la contraseña. Vea el fichero código fuente de APR apr_md5.c para más detalles sobre este algoritmo.
SHA1
"{SHA}" + digest SHA1 codificado-en-Base64 de la contraseña. Inseguro.
CRYPT
Solo Unix. Usa la función tradicional de Unix crypt(3) con un valor salt de 32-bit generado aleatoriamente (solo se usan 12 bits) y los primeros 8 caracteres de la contraseña. Inseguro.
PLAIN TEXT (texto plano) (i.e. sin encriptar)
Solo Windows & Netware. Inseguro.

Generando valores con htpasswd

bcrypt

$ htpasswd -nbB myName myPassword
myName:$2y$05$c4WoMPo3SXsafkva.HHa6uXQZWr7oboPiC2bT/r7q1BB8I2s0BRqC

MD5

$ htpasswd -nbm myName myPassword
myName:$apr1$r31.....$HqJZimcKQFAMYayBlzkrA/

SHA1

$ htpasswd -nbs myName myPassword
myName:{SHA}VBPuJHI7uixaa6LQGWx4s+5GKNE=

CRYPT

$ htpasswd -nbd myName myPassword
myName:rqXexS6ZhobKA

Generando valores CRYPT y MD5 values con el programa de línea de comandos OpenSSL

OpenSSL conoce el algoritmo MD5 específico-de-Apache.

MD5

$ openssl passwd -apr1 myPassword
$apr1$qHDFfhPC$nITSVHgYbDAK1Y0acGRnY0

CRYPT

openssl passwd -crypt myPassword
qQ5vTYO3c8dsU

Validando contraseñas CRYPT o MD5 con el programa de línea de comandos OpenSSL

El valor salt de una contraseña CRYPT es sus dos primeros caracteres (convertidos a un valor binario). Para validar myPassword contra rqXexS6ZhobKA

CRYPT

$ openssl passwd -crypt -saltt rq myPassword
Warning: truncating password to 8 characters
rqXexS6ZhobKA

Tenga en cuenta que usando myPasswo en lugar de myPassword producirá el mismo resultado porque solo se tienen en cuenta los 8 primeros caracteres de las contraseñas CRYPT.

El valor salt para una contraseña MD5 está entre $apr1$ y el siguiente $ (como un valor binario codificado-en-Base64 máximo 8 caracteres). Para validar myPassword contra $apr1$r31.....$HqJZimcKQFAMYayBlzkrA/

MD5

$ openssl passwd -apr1 -saltt r31..... myPassword
$apr1$r31.....$HqJZimcKQFAMYayBlzkrA/

Campos de contraseña de base de datos para mod_dbd

La variante SHA1 es probablemente el formato más útil para autenticación DBD. Desde que las funciones SHA1 y Base64 están disponibles generalmente, otro software puede poblar una base de datos con contraseñas encriptadas que son utilizables con la autenticación básica de Apache.

Para generar contraseñas de la variante Apache de SHA-1 para autenticación básica en varios lenguajes:

PHP

'{SHA}' . base64_encode(sha1($password, TRUE))

Java

"{SHA}" + new sun.misc.BASE64Encoder().encode(java.security.MessageDigest.getInstance("SHA1").digest(password.getBytes()))

ColdFusion

"{SHA}" & ToBase64(BinaryDecode(Hash(password, "SHA1"), "Hex"))

Ruby

require 'digest/sha1'
require 'base64'
'{SHA}' + Base64.encode64(Digest::SHA1.digest(password))

C or C++

Use la función APR: apr_sha1_base64

Python

import base64
import hashlib
"{SHA}" + format(base64.b64encode(hashlib.sha1(password).digest()))

PostgreSQL (con las funciones contrib/pgcrypto instaladas)

'{SHA}'||encode(digest(password,'sha1'),'base64')

top

Autenticación Digest

Apache reconoce un formato para las contraseñas de autenticación-digest - el MD5 hash de la cadena de caracteres user:realm:password como una cadena de 32-caracteres de dígitos hexadecimales. realm es el parámetro del Ámbito de Autorización para la directiva AuthName en httpd.conf.

Campos de contraseñaa de Base de datos para mod_dbd

Puesto que la función MD5 está disponible generalmente, otro software puede rellenar la base de daatos con contraseñas encriptadas que son utilizables por la autenticación digest de Apache.

Para generar contraseñas de autenticación-digest de Apache en varios lenguajes:

PHP

md5($user . ':' . $realm . ':' .$password)

Java

byte b[] = java.security.MessageDigest.getInstance("MD5").digest( (user + ":" + realm + ":" + password ).getBytes());
java.math.BigInteger bi = new java.math.BigInteger(1, b);
String s = bi.toString(16);
while (s.length() < 32)
s = "0" + s; // La cadena s es la contraseña encriptada.

ColdFusion

LCase(Hash( (user & ":" & realm & ":" & password) , "MD5"))

Ruby

require 'digest/md5'
Digest::MD5.hexdigest(user + ':' + realm + ':' + password)

PostgreSQL (con las funciones contrib/pgcrypto instaladas)

encode(digest( user || ':' || realm || ':' || password , 'md5'), 'hex')

Idiomas disponibles:  en  |  es  |  fr 

top

Comentarios

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.