Node: crypto sha1 devuelve un valor diferente en nodejs 6.0.0

Creado en 30 abr. 2016  ·  3Comentarios  ·  Fuente: nodejs/node

  • Versión : 6.0.0
  • Plataforma : Windows 10 de 64 bits
  • Subsistema :

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?

crypto question

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:

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).

Todos 3 comentarios

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!

¿Fue útil esta página
0 / 5 - 0 calificaciones