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

2885
peter_the_oak

Я вхожу:

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' |означает трубопровод, который вызывает вложенные оболочки, а также имеет аргументы для обработки новой строки. Здесь, кажется, вы должны рассмотреть версию оболочки .
12
Большое спасибо Sideshowbarker и Spiff. Пробелы пробивают снова ^^ ^^ peter_the_oak 7 лет назад 0
Возможный дубликат [md5: почему мой хэш командной строки отличается от онлайн-результатов md5?] (Http://superuser.com/questions/71554/md5-why-is-my-command-line-hash-different- из-онлайн-md5-хеш-результаты) muru 7 лет назад 5
Обратите внимание, что строка здесь должна быть полностью идентична однострочному документу здесь, а документ здесь всегда заканчивается новой строкой. chepner 7 лет назад 0
Я не новичок в оболочке, но вот некоторые сложные детали и новости, за которые я благодарен. Так что спасибо за все комментарии и ответы. peter_the_oak 7 лет назад 0
Итак, мы обнаружили, что команда shasum в Mac ничем не отличается. Технически проблема заключалась в ошибке пользователя, и она была связана с передаваемыми данными, а не с программой. Могу ли я предложить переименовать вопрос в «Почему я получаю разные результаты от shasum Mac ...» Таким образом, люди могут мгновенно заподозрить созданную пользователем проблему. (Если бы я видел это, я, возможно, был бы менее склонен проверить этот вопрос прямо сейчас. Как в настоящее время называется «Что отличает shasum для mac shell от других калькуляторов shasum?», Я пришел сюда, чтобы узнать о возможных различиях, характерных для Mac, что не то, что это на самом деле закончилось как TOOGAM 7 лет назад 0
@TOOGAM: я согласен, поэтому я изменил название. Большое спасибо за предложение. peter_the_oak 7 лет назад 0

2 ответа на вопрос

32
sideshowbarker

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

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

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

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

19
Spiff

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

hexdump -C <<< test 

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

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