Hola, es genial para mí actualizar a nodejs 6.0, pero encontré que crypto-sha1 se comportaba de manera extraña.
Código:
var sha1 = crypto.createHash('sha1');
sha1
.update('喵тვו3ת台и憂3მლc80be5b88d258eec1dfb09bd6a27b990249a28dd94efa9af55dbb01c0be24114')
.digest('hex');
en nodejs 0.12.x - 5.x, devuelve 81737baa0e0985d054d58fa43d6746549134d956
; (probado en 5.10.1)
pero en nodejs 6.0.0, devuelve b0d4ca8a57a82807f4c0b6309d10565c5a506ec7
Este cambio es algo terrible para mí, porque uso sha1 para almacenar la contraseña de las cuentas.
¿Por qué es? ¿Y qué debo hacer para arreglar mi almacén de contraseñas?
Es por https://github.com/nodejs/node/commit/b010c8716498dca398e61c388859fea92296feb3
Se cambió la codificación de caracteres predeterminada. Para obtener el hash anterior a v6.0.0, use:
sha1.update('喵тვו3ת台и憂3მლc80be5b88d258eec1dfb09bd6a27b990249a28dd94efa9af55dbb01c0be24114','binary').digest('hex')
Produce: '81737baa0e0985d054d58fa43d6746549134d956'
Tenga en cuenta el argumento 'binary'
agregado que indica que esto debe interpretarse como binario (y no como utf8).
por cierto, en general, no debe usar sha1 para el almacenamiento de contraseñas. Debería estar mirando https://nodejs.org/dist/latest-v6.x/docs/api/crypto.html#crypto_crypto_pbkdf2_password_salt_iterations_keylen_digest_callback
Resuelto, gracias. Parece que cometí un gran error hace mucho tiempo ...
y gracias por tu consejo!
Comentario más útil
Es por https://github.com/nodejs/node/commit/b010c8716498dca398e61c388859fea92296feb3
Se cambió la codificación de caracteres predeterminada. Para obtener el hash anterior a v6.0.0, use:
Produce:
'81737baa0e0985d054d58fa43d6746549134d956'
Tenga en cuenta el argumento
'binary'
agregado que indica que esto debe interpretarse como binario (y no como utf8).