Генерация sha256 из командной строки Linux

Я знаю, что строка "foobar" генерирует SHA 256 хэш c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2, используя http://hash.online-convert.com/sha256-generator

Однако оболочка командной строки:

[email protected] ~$ echo foobar | sha256sum 
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f  -

Создает другой хеш. Что мне не хватает?

Ответ 1

echo обычно выводит новую строку, которая подавляется с помощью -n. Попробуйте следующее:

echo -n foobar | sha256sum

Ответ 2

Если вы установили openssl, вы можете использовать:

echo -n "foobar" | openssl dgst -sha256

Для других алгоритмов вы можете заменить -sha256 на -md4, -md5, -ripemd160, -sha, -sha1, -sha224, -sha384, -sha512 или -whirlpool.

Ответ 3

Если команда sha256sum недоступна (например, для mavericks), вы можете использовать:

echo -n "foobar" | shasum -a 256

Ответ 4

echo -n работает и вряд ли когда-либо исчезнет из-за массивного исторического использования, однако в последних версиях в стандарте POSIX, новых совместимых приложений "рекомендуется использовать printf".

Ответ 5

Я считаю, что echo выводит конечную новую строку. Попробуйте использовать -n в качестве параметра для эха, чтобы пропустить новую строку.

Ответ 6

echo создает завершающий символ новой строки, который также хэшируется. попробуйте:

/bin/echo -n foobar | sha256sum