PHP и bash возвращают разные результаты хеширования

Я получаю разные результаты при попытке создать хэш с помощью команд bash и PHP-функции hash (). Я посмотрел на предыдущие вопросы, и наиболее распространенная проблема заключается в том, что внутри строки скрывается новая строка или какой-то другой символ, однако я выполняю функции на реальных строках, а не на файлах, так что это не проблема.

Например:

Bash:

md5sum <<< hello : b1946ac92492d2347c6235b4d2611184

sha256sum <<< hello : 5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03

PHP хэш () функция:

hash('md5', 'hello') : 9dd4e461268c8034f5c8564e155c67a6

hash('sha256', 'hello') : 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

Что мне здесь не хватает? Почему значения разные?

4

Решение

Потому что md5sum добавляет символ новой строки к вашему вводу перед хэшированием

Эквивалент PHP:

echo hash('md5', "hello\n");

который будет генерировать b1946ac92492d2347c6235b4d2611184то же значение, что и

md5sum <<< hello

Если вы хотите запретить включение новой строки в хэш, сгенерированный bash, используйте

echo -n hello | md5sum
7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]