Ответ 1
echo
обычно выводит новую строку, которая подавляется с помощью -n
. Попробуйте следующее:
echo -n foobar | sha256sum
Я знаю, что строка "foobar" генерирует SHA 256 хэш c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2
, используя
http://hash.online-convert.com/sha256-generator
Однако оболочка командной строки:
[email protected] ~$ echo foobar | sha256sum
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f -
Создает другой хеш. Что мне не хватает?
echo
обычно выводит новую строку, которая подавляется с помощью -n
. Попробуйте следующее:
echo -n foobar | sha256sum
Если вы установили openssl
, вы можете использовать:
echo -n "foobar" | openssl dgst -sha256
Для других алгоритмов вы можете заменить -sha256
на -md4
, -md5
, -ripemd160
, -sha
, -sha1
, -sha224
, -sha384
, -sha512
или -whirlpool
.
Если команда sha256sum недоступна (например, для mavericks), вы можете использовать:
echo -n "foobar" | shasum -a 256
echo -n
работает и вряд ли когда-либо исчезнет из-за массивного исторического использования, однако в последних версиях в стандарте POSIX, новых совместимых приложений "рекомендуется использовать printf
".
Я считаю, что echo
выводит конечную новую строку. Попробуйте использовать -n
в качестве параметра для эха, чтобы пропустить новую строку.
echo создает завершающий символ новой строки, который также хэшируется. попробуйте:
/bin/echo -n foobar | sha256sum