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.