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' | означает трубопровод, который вызывает вложенные оболочки, а также имеет аргументы для обработки новой строки. Здесь, кажется, вы должны рассмотреть версию оболочки.

2 ответа2

32

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

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

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

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

19

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

hexdump -C <<< test

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .