Почему я получаю другие результаты от shasum Mac, чем от других калькуляторов shasum?
Я вхожу:
appletree:~ somename$ shasum -a 512 <<< test
И вывод:
0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123 -
Затем я захожу в некоторые онлайн-хеш-генераторы и тоже вводю "тест". Их ответы:
ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff
http://passwordsgenerator.net/sha512-hash-generator/:
EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF
Так что онлайн-генераторы согласны. Чего мне не хватает в консольной команде Mac?
Я читал man
страницы. Я вижу, что это реализовано с использованием библиотеки Perl. Тем не менее, я думаю, что sha512 будет уникальным обозначением, поэтому я должен копать глубже.
Кажется, есть двойной вопрос: почему мой хэш командной строки отличается от онлайн-результатов MD5?, Хотя другой вопрос находится в том же контексте, который является неожиданным пробелом, он возникает из другой ситуации.
<<<
здесь строка, и есть выбор дизайна для того, как здесь строки добавляют новую строку.echo 'bla' |
означает трубопровод, который вызывает вложенные оболочки, а также имеет аргументы для обработки новой строки. Здесь, кажется, вы должны рассмотреть версию оболочки.
2 ответа
Вход в shasum
вызов в вопросе test\n
(с новой строкой), а не test
,
Если вы даете test
без перевода строки на shasum
вы получите тот же результат, что и онлайн-инструменты, которые вы цитируете:
$ echo -n "test" | shasum -a 512
ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff -
Кстати, я думаю, что нет ничего особенного или специфичного для MacOS в shasum
найдено на MacOS; Я думаю shasum
является частью стандартного дистрибутива Perl, установленного вместе, например, с perl
команда.
Попробуй это:
hexdump -C <<< test
Зная оболочки Unix, вы, вероятно, получите нежелательный 0x0a в конце этой строки.