2010-04-02 18 views

Respuesta

6

La función hash(), siempre con PHP> = 5.1, debe ser capaz de generar hashes SHA512 - se puede comprobar esto llamando a la hash_algos() función, que enumera los algoritmos hash soportados.


Por ejemplo, se puede utilizar:

$sha512 = hash('sha512', "Hello, World!"); 
var_dump($sha512); 

Y se obtendría:

string '374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387' (length=128) 


Y, en mi sistema, la siguiente porción de código:

$supported = hash_algos(); 
var_dump($supported); 

Indica t sombrero de 42 algoritmos hash son compatibles:

array 
    0 => string 'md2' (length=3) 
    ... 
    6 => string 'sha384' (length=6) 
    7 => string 'sha512' (length=6) 
    8 => string 'ripemd128' (length=9) 
    9 => string 'ripemd160' (length=9) 
    ... 
    40 => string 'haval224,5' (length=10) 
    41 => string 'haval256,5' (length=10) 



Además, con PHP> = 5.3, usted debería ser capaz de utilizar la función openssl_digest():

$sha512 = openssl_digest("Hello, World!", 'sha512'); 
var_dump($sha512); 

(Sí, los parámetros no están en el mismo orden que con hash() - la magia de PHP, aquí ...)

Y, para obtener la lista de algoritmos soportados, podría utilizar openssl_get_md_methods().

En mi sistema, este me da 22 algoritmos compatibles.

+0

Si su software necesita ejecutarse en varias máquinas, asegúrese de que esté disponible en todas sus máquinas. – TheJacobTaylor

+0

¿Puede proporcionar un ejemplo de inicio de sesión de contraseña simple, si no está pidiendo mucho :) – PeAk

+1

Eso es un poco más complicado que esto ^^ Pero la idea básica es: obtener la contraseña que el usuario publicó ;; Ha golpeado ;; compare ese hash con la contraseña hash que está almacenada en la base de datos para el inicio de sesión proporcionado por el usuario ;; si coinciden, está bien, y puede configurar algo en '$ _SESSION' para indicar que el usuario ha iniciado sesión. –

1

Solo por curiosidad, ¿por qué quiere reemplazar la función MD5?

Es relativamente eficiente. Si agrega una sal, es realmente molesto aplicar ingeniería inversa. Alguien tendría que realizar una codificación de fuerza bruta de todas las contraseñas buscando una coincidencia. Sin una sal, cadenas cortas comunes minúsculas, todas las cadenas de letras se han descifrado y almacenado en una base de datos.

Simplemente agregaría un sal y lo llamaría bueno.

Jacob

+0

¿cómo podría hacer una sal? Más importante aún ¿cómo generaría una sal aleatoria? – PeAk

+0

+1 y también, desde MD5 a SHA512 ... todo un salto allí. –

+0

mejor seguro que lo siento. – PeAk

0

sumas de comprobación son para las sumas de comprobación de generación, HMAC es quizás la forma preferida para la generación de hashes salados de cuerdas que requieren hashing de fijación.

hash_hmac('sha512', 'important string', 'salt'); 
Cuestiones relacionadas