Por que obtenho resultados diferentes do shasum do Mac do que de outras calculadoras de shasum?

12

Estou entrando:

appletree:~ somename$ shasum -a 512 <<< test

E a saída é:

0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123  -

Depois, vou a alguns geradores de hash on-line e insiro "teste" também. Suas respostas são:

link :

ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff

link :

EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF

Então os geradores online concordam. O que estou faltando no comando do console do Mac?

Eu estava lendo as man páginas. Eu vejo que é implementado usando uma biblioteca Perl. No entanto, acho que o sha512 seria uma designação única, então eu tenho que ir mais fundo.

Parece haver uma pergunta duplicada: Por que meu hash de linha de comando é diferente dos resultados de hash MD5 on-line? . Enquanto a outra questão está no mesmo contexto, que é um espaço em branco inesperado, ela surge de uma situação diferente.

  • <<< é uma aqui string , e há um design choice para saber como as strings aqui adicionam nova linha.
  • echo 'bla' | significa piping, que invoca sub shells e também possui argumentos sobre como lidar com newline. Aqui parece que você tem que considerar a versão do shell .
por peter_the_oak 18.02.2017 / 09:32

2 respostas

32

A entrada para a invocação shasum na questão é test\n (com uma nova linha), não test .

Se você der test sem nova linha a shasum , obterá a mesma saída das ferramentas on-line citadas:

$ echo -n "test" | shasum -a 512
ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff  -

A propósito, acho que não há nada especial ou específico do MacOS sobre o shasum encontrado no MacOS; Acho que shasum faz parte da distribuição padrão do Perl - instalado junto com, por exemplo, o comando perl .

    
por 18.02.2017 / 10:24
19

Tente isto:

hexdump -C <<< test

Conhecendo shells Unix, provavelmente você está recebendo um 0x0a indesejado no final dessa string.

    
por 18.02.2017 / 10:29