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

13

Estou entrando:

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

E a saída é:

0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123  -

Então vou a alguns geradores de hash online e insiro "test" também. Suas respostas são:

http://hashgenerator.de/ :

ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff

http://passwordsgenerator.net/sha512-hash-generator/ :

EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF

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

Eu estava lendo as manpáginas. Vejo que é implementado usando uma biblioteca Perl. No entanto, acho que sha512 seria uma designação única, então tenho que me aprofundar mais.


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

  • <<<é uma string here e existe uma opção de design para como as strings here adicionam nova linha.
  • echo 'bla' |significa canalização, que invoca subcascas e também possui argumentos para lidar com a nova linha. Aqui parece que você deve considerar a versão do shell .
peter_the_oak
fonte
Muito obrigado a sideshowbarker e Spiff. Espaços em branco ataca novamente ^^ ^^
peter_the_oak
Observe que uma string here deve ser exatamente idêntica a um documento here de uma linha e um documento here sempre termina com uma nova linha.
Chepner
Não sou novo no shell, mas aqui estão alguns detalhes sofisticados e notícias pelas quais sou grato. Então, obrigado por todos os comentários e respostas.
Peter_the_oak
Então descobrimos que o comando shasum do Mac não é diferente. O problema era tecnicamente erro do usuário e tinha a ver com os dados que estavam sendo transmitidos, não com o programa. Posso sugerir que você renomeie a pergunta para "Por que obtenho resultados diferentes do shasum do Mac ..." Dessa forma, as pessoas podem suspeitar instantaneamente de um problema criado pelo usuário. (Se eu tivesse visto isso, poderia estar menos inclinado a verificar essa questão agora. Como atualmente intitulado "O que distribui o shasum do shell do mac de outras calculadoras de shasum?", Vim aqui para aprender sobre possíveis diferenças específicas do Mac, que não é exatamente o que isso acabou sendo #
TOOGAM 19/0217

Respostas:

32

A entrada para a shasumchamada na pergunta é test\n(com uma nova linha), não test.

Se você fornecer testsem nova linha, shasumobterá o mesmo resultado das ferramentas on-line que você cita:

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

A propósito, acho que não há nada de especial ou específico do MacOS sobre o shasumencontrado no MacOS; Eu acho que shasumfaz parte da distribuição Perl padrão - instalada junto com, por exemplo, o perlcomando.

sideshowbarker
fonte
19

Tente o seguinte:

hexdump -C <<< test

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

Spiff
fonte
2
odrotulará caracteres de controle e tornará o mais aparente; tente: od -t a -t x1 <<< test(nunca realmente usado hexdump),
toddkaufmann 20/02