python flask password-encryption

python - bcrypt download



Frasco-generate_password_hash no salida constante (1)

La contraseña está en sal , sí. La sal se agrega a la contraseña antes de hash, para garantizar que el hash no se pueda utilizar en un ataque de tabla arcoiris .

Debido a que la sal se genera aleatoriamente cada vez que llama a la función, el hash de contraseña resultante también es diferente. El hash devuelto incluye la sal generada para que pueda verificar correctamente la contraseña.

Manifestación:

>>> from werkzeug.security import generate_password_hash >>> generate_password_hash(''foobar'') ''pbkdf2:sha1:1000$tYqN0VeL$2ee2568465fa30c1e6680196f8bb9eb0d2ca072d'' >>> generate_password_hash(''foobar'') ''pbkdf2:sha1:1000$XHj5nlLU$bb9a81bc54e7d6e11d9ab212cd143e768ea6225d''

Estas dos cadenas son diferentes; pero contienen suficiente información para verificar la contraseña porque la sal generada está incluida en cada uno:

# pbkdf2:sha1:1000$tYqN0VeL$2ee2568465fa30c1e6680196f8bb9eb0d2ca072d ^^^^^^^^^^^^^^^^ salt ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ algo info ^^^^^^^^ actual hash of the password (PBKDF2 applied SHA1 1000 times)

Debido a que la sal aleatoria es tYqN0VeL para uno y XHj5nlLU , el hash resultante también es diferente.

La contraseña de foobar aún se puede verificar contra hash:

>>> from werkzeug.security import check_password_hash >>> check_password_hash(''pbkdf2:sha1:1000$tYqN0VeL$2ee2568465fa30c1e6680196f8bb9eb0d2ca072d'', ''foobar'') True >>> check_password_hash(''pbkdf2:sha1:1000$XHj5nlLU$bb9a81bc54e7d6e11d9ab212cd143e768ea6225d'', ''foobar'') True

Ver también

En Flask,

Cuando intento ejecutar generate_password_hash("Same password") varias veces, la salida es diferente cada vez.

Qué estoy haciendo mal. ¿Por qué no es constante?

Supongo que tiene algo que ver con poner la sal.