Почему я получаю другие результаты от shasum Mac, чем от других калькуляторов shasum?

13

Я вхожу:

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

И вывод:

0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123  -

Затем я захожу в некоторые онлайн-хеш-генераторы и тоже вводю «тест». Их ответы:

http://hashgenerator.de/ :

ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff

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

EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF

Так что онлайн-генераторы согласны. Чего мне не хватает в консольной команде Mac?

Я читал manстраницы. Я вижу, что это реализовано с использованием библиотеки Perl. Тем не менее, я думаю, что sha512 будет уникальным обозначением, поэтому я должен копать глубже.


Кажется, есть двойной вопрос: почему мой хэш командной строки отличается от онлайн-результатов MD5? , Хотя другой вопрос находится в том же контексте, который является неожиданным пробелом, он возникает из другой ситуации.

  • <<<является здесь строка , и есть выбор дизайна для того, как здесь строки добавить символ новой строки.
  • echo 'bla' |означает трубопровод, который вызывает вложенные оболочки, а также имеет аргументы для обработки новой строки. Здесь, кажется, вы должны рассмотреть версию оболочки .
peter_the_oak
источник
Большое спасибо Sideshowbarker и Spiff. Пробелы снова бьют ^^ ^^
peter_the_oak
Обратите внимание, что строка здесь должна быть полностью идентична однострочному документу здесь, а документ здесь всегда заканчивается новой строкой.
chepner
Я не новичок в оболочке, но вот некоторые сложные детали и новости, за которые я благодарен. Так что спасибо за все комментарии и ответы.
peter_the_oak
Итак, мы обнаружили, что команда shasum в Mac ничем не отличается. Технически проблема заключалась в пользовательской ошибке, связанной с передаваемыми данными, а не с программой. Могу ли я предложить переименовать вопрос в «Почему я получаю разные результаты от shasum Mac ...» Таким образом, люди могут сразу заподозрить созданную пользователем проблему. (Если бы я видел это, я, возможно, был бы менее склонен проверить этот вопрос прямо сейчас. Как в настоящее время называется «Что отличает shasum для mac shell от других калькуляторов shasum?», Я пришел сюда, чтобы узнать о возможных различиях, характерных для Mac, это не то, чем это на самом деле закончилось
TOOGAM

Ответы:

32

Вход для shasumвызова в вопросе test\n(с новой строкой), а не test.

Если вы дадите testбез перевода строки, shasumвы получите тот же результат, что и цитируемые вами онлайн-инструменты:

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

Кстати, я думаю, что нет ничего особенного или специфичного для MacOS в том, что можно shasumнайти в MacOS; Я думаю, что shasumэто часть стандартного дистрибутива Perl, установленного вместе, например, с perlкомандой.

sideshowbarker
источник
19

Попробуй это:

hexdump -C <<< test

Зная оболочки Unix, вы, вероятно, получите нежелательный 0x0a в конце этой строки.

Spiff
источник
2
odпомечает управляющие символы и делает их более заметными; попробуй: od -t a -t x1 <<< test(никогда не использовал hexdump),
toddkaufmann