Quiero obtener un Hash SHA256 que me dé el mismo resultado que obtengo en la terminal
echo -n "hello world" | shasum -0 -a 256
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Probé dos guiones diferentes
const {Sha256} = require('@aws-crypto/sha256-js'); (async () => { const hash = new Sha256(); hash.update('hello world'); const result = await hash.digest(); let hex = Buffer.from(result).toString('hex'); console.log(hex); })()Y
var hash = require('hash.js') console.log(hash.sha256().update('hello world').digest('hex')) Ambos me dan el hash b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
¿Cómo puedo obtener el mismo hash del shasum en mi terminal?
Si le preguntas a la página de manual de shasum verás;
-0, --01 read in BITS mode ASCII '0' interpreted as 0-bit, ASCII '1' interpreted as 1-bit, all other characters ignored
Eso lee solo 0 s y 1 s del archivo (tubería en su caso). Ahora elimine el parámetro -0 o mejor defina el valor predeterminado
-t, --text leído en modo texto (predeterminado)
$ echo -n "hola mundo" | shasum-t-a 256 | cortar -c -64 b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
Ahora tenemos la misma salida.
Nota 1 : que el cut se usa para eliminar el espacio y el guión al final.
No 2: NIST tiene un vector de prueba en el Programa de validación de algoritmos criptográficos y el valor SHA-256 de cadena vacía (longitud 0) se proporciona como en el archivo SHA256ShortMsg.rsp ;
Len = 0 Msg = 00 MD = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Nota 3 : para la función hash del NIST, no se debe confiar en el resultado de terceros. Necesitan mirar los vectores NIST.