strip_tags remove quitar para funcion etiquetas ejemplo php encryption passwords blowfish crypt

php - remove - ¿Por qué crypt() genera resultados diferentes?



strip_tags wordpress (1)

Porque estás creando la salt con la ayuda de números aleatorios,

La función mt_rand() creará un número aleatorio cada vez que llame, opcionalmente con parámetros mt_rand() y máximos. Por lo general, para el cifrado fuerte de contraseñas de criptografía, se debe generar sal utilizando un generador de números pseudoaleatorios criptográficamente seguro (CSPRNG).

Luego, acércate a tu problema, supongo que no habrá diferencia en el algoritmo entre ZEND y php. Porque zend es un marco que envuelve el núcleo php y lo usa.

Para verificar la contraseña, cómo funciona el cheque de crypt

crypt($password, $stored_hash) == $stored_hash;

Una vez que haya almacenado el hash al primer hash, será fácil verificarlo con esto.

Eso es lo que realmente sucede aquí, si pasas el hash como segundo parámetro a la función blowfish, devolverá la verificación por un valor de bool, independientemente de la sal.

if (substr($storedpass, 0, 60) == crypt($password, "$2y$08$".substr($storedpass, 60))) { return true; } else { return false; }

para su información sobre hash y seguridad, lea esto

Espero que esto ayude

Crypt está generando hashes diferentes con los mismos datos de entrada, y el [siguiente] hash generator / check previamente funcional ya no funciona para la autenticación de usuarios:

public static function blowfish($password, $storedpass = false) { //if encrypted data is passed, check it against input ($info) if ($storedpass) { if (substr($storedpass, 0, 60) == crypt($password, "$2y$08$".substr($storedpass, 60))) { return true; } else { return false; } } else { //make a salt and hash it with input, and add salt to end $salt = ""; for ($i = 0; $i < 22; $i++) { $salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", mt_rand(0, 63), 1); } //return 82 char string (60 char hash & 22 char salt) return crypt($password, "$2y$08$".$salt).$salt; } }

Me estoy golpeando la cabeza contra la pared y no he encontrado respuestas en las diferencias entre los algoritmos internos de Zend vs PHP versus los algoritmos del sistema operativo; o variaciones entre PHP 5.3.8 vs anterior ...

EDIT: Mi pregunta es técnicamente respondida, y es mi culpa que no pregunté correctamente. Implementé:

$salt = substr(bin2hex(openssl_random_pseudo_bytes(22)), 0, 22); //for ($i = 0; $i < 22; $i++) { //$salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", mt_rand(0, 63), 1); //}

Mi verdadera pregunta es; ¿Por qué las siguientes funciones vuelven de manera diferente?

print(substr($storedpass, 0, 60)."<br />");

devoluciones: $ 2y $ 08 $ 43f053b1538df81054d4cOJyrO5 / j7NtZBCw6LrFof29cLBs7giK6

print(crypt($password, "$2a$08$".substr($storedpass, 60)));

devoluciones: $ 2a $ 08 $ 43f053b1538df81054d4cOPSGh / LMc0PZx6RC6PlXOSc61BKq / F6.