Saltar al contenido

¿Cómo puedo obtener el hash sha1 de un string en node.js?

Nuestro grupo de especialistas despúes de varios días de investigación y recopilar de datos, dieron con la respuesta, deseamos que te resulte útil en tu plan.

Solución:

Ver el crypto.createHash() función y la asociada hash.update() y hash.digest() funciones:

var crypto = require('crypto')
var shasum = crypto.createHash('sha1')
shasum.update('foo')
shasum.digest('hex') // => "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"

Obligatorio: SHA1 está roto, puede calcular colisiones SHA1 por 45 000 USD. Deberías usar sha256:

var getSHA256ofJSON = function(input)
    return crypto.createHash('sha256').update(JSON.stringify(input)).digest('hex')

Para responder a su pregunta y hacer un hash SHA1:

const INSECURE_ALGORITHM = 'sha1'
var getInsecureSHA1ofJSON = function(input)
    return crypto.createHash(INSECURE_ALGORITHM).update(JSON.stringify(input)).digest('hex')

Después:

getSHA256ofJSON('whatever')

o

getSHA256ofJSON(['whatever'])

o

getSHA256ofJSON('this':'too')

Documentos oficiales del nodo en crypto.createHash()

Consejos para evitar problemas (mal hash):

Experimenté que NodeJS está procesando la representación UTF-8 del string. Otros lenguajes (como Python, PHP o PERL…) están procesando el byte string.

Podemos agregar binario argumento para usar el byte string.

const crypto = require("crypto");

function sha1(data) 
    return crypto.createHash("sha1").update(data, "binary").digest("hex");


sha1("Your text ;)");

Puedes probar con: “xac”, “xd1”, “xb9”, “xe2”, “xbb”, “x93”, etc…

Otros lenguajes (Python, PHP, …):

sha1("xac") //39527c59247a39d18ad48b9947ea738396a3bc47

nodos:

sha1 = crypto.createHash("sha1").update("xac", "binary").digest("hex") //39527c59247a39d18ad48b9947ea738396a3bc47
//without:
sha1 = crypto.createHash("sha1").update("xac").digest("hex") //f50eb35d94f1d75480496e54f4b4a472a9148752

valoraciones y reseñas

Si piensas que te ha resultado de utilidad este post, agradeceríamos que lo compartas con otros programadores y nos ayudes a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *