Я знаю, что строка "foobar" генерирует хеш SHA-256 c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2
с использованием
http://hash.online-convert.com/sha256-generator
Однако командная строка оболочки:
hendry@x201 ~$ echo foobar | sha256sum
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f -
Создает другой хэш. Чего мне не хватает?
sha256sum < foobar
, Нет необходимости в cat , echo , printf , ... Смотрите также Бесполезное использование cat?< foobar
это не то же самое, чтоecho foobar |
. Эквивалентомecho foobar |
будет,sha256sum <<< foobar
но это добавляет новую строку в foobar, какecho
.openssl dgst -sha256 foobar
у меня работает на MacOS High Sierra, тогда какecho -n foobar | openssl dgst -sha256
дал неверный ответ.Ответы:
echo
обычно выводит новую строку, которая подавляется с помощью-n
. Попробуй это:источник
echo -n foobar | shasum -a 256
printf
;)alias sha256sum='shasum --algorithm 256'
-
печатается.Если вы установили
openssl
, вы можете использовать:Для других алгоритмов можно заменить
-sha256
с-md4
,-md5
,-ripemd160
,-sha
,-sha1
,-sha224
,-sha384
,-sha512
или-whirlpool
.источник
Если команда sha256sum недоступна (например, в Mac OS X 10.9 (Mavericks)), вы можете использовать:
echo -n "foobar" | shasum -a 256
источник
echo -n
работает и вряд ли когда-либо исчезнет из-за массового использования в прошлом, однако в последних версиях стандарта POSIX « новые» приложения «рекомендуется» использоватьprintf
.источник
echo
производит завершающий символ новой строки, который тоже хэшируется. Пытаться:источник
Я считаю, что
echo
выводит завершающий перевод строки. Попробуйте использовать-n
в качестве параметра echo для пропуска новой строки.источник