Я получаю разные результаты при попытке создать хэш с помощью команд bash и PHP-функции hash (). Я посмотрел на предыдущие вопросы, и наиболее распространенная проблема заключается в том, что внутри строки скрывается новая строка или какой-то другой символ, однако я выполняю функции на реальных строках, а не на файлах, так что это не проблема.
Например:
Bash:
md5sum <<< hello
: b1946ac92492d2347c6235b4d2611184
sha256sum <<< hello
: 5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03
PHP хэш () функция:
hash('md5', 'hello')
: 9dd4e461268c8034f5c8564e155c67a6
hash('sha256', 'hello')
: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Что мне здесь не хватает? Почему значения разные?
Потому что md5sum добавляет символ новой строки к вашему вводу перед хэшированием
Эквивалент PHP:
echo hash('md5', "hello\n");
который будет генерировать b1946ac92492d2347c6235b4d2611184
то же значение, что и
md5sum <<< hello
Если вы хотите запретить включение новой строки в хэш, сгенерированный bash, используйте
echo -n hello | md5sum
Других решений пока нет …