const SHA256 = require("crypto-js/sha256"); // the possible colors that the hash could represent const COLORS = ['red', 'green', 'blue', 'yellow', 'pink', 'orange']; // given a hash, return the color that created the hash function findColor(hash) { let hashedColor; COLORS.forEach(color => { let hashedColor = SHA256(JSON.stringify(color)).toString(); console.log(hashedColor); if (hashedColor === hash) { return color; }; }); }; module.exports = findColor;Estoy experimentando con algo de hashing y manualmente usando una tabla de arcoíris. Cuando importo el método SHA256, encuentro que puedo crear un hash para cada uno de los colores, pero esto devuelve un objeto, que luego necesito .stringify() para poder consolar.log() el hash real.
Mi pregunta es, ¿por qué tengo que usar tanto JSON.stringify() como .toString()?
Creo que no entiendo muy bien qué tipo de datos me da la función SHA256, y no puedo encontrarlo en ningún lado.
JSON.stringify() está serializando el valor de color como JSON. Esto es necesario en la mayoría de los casos porque su biblioteca hash solo puede hacer cadenas (o probablemente también búfer, pero no solo objetos nativos).
Sin embargo, ya tiene cadenas y, por lo tanto, no necesita serializar las cadenas como JSON. Por lo tanto, puede eliminar el JSON.stringify() extraño aquí.