Почему `md5sum` не дает тот же хеш, что и Интернет?

8

Я хочу найти md5-хэш строки «a», но запуск echo "a" | md5sumдает мне другой хэш, чем тот, который я получаю, если я ищу в Интернете (например, с помощью DuckDuckGo или первого найденного результата поиска ).

Запуск echo "a" | md5sumдает мне "60b725f10c9c85c70d97880dfe8191b3", но это должно быть "0cc175b9c0f1b6a831c399e269772661".

Если я сделаю обратный поиск хеша для «60b725f10c9c85c70d97880dfe8191b3», я получу «a».

Lindhe
источник

Ответы:

15

Причина, по которой хэши отличаются, заключается в том, что echoв конце выходной строки добавлена ​​новая строка, чтобы сделать ее красивой. Это может быть запрещено -nфлагом (если ваша реализация echoподдерживает это) или с помощью другой программы (например printf):

> echo "a" | md5sum   
60b725f10c9c85c70d97880dfe8191b3  -

> echo -n "a" | md5sum
0cc175b9c0f1b6a831c399e269772661  -

> printf "a" | md5sum 
0cc175b9c0f1b6a831c399e269772661  -
Lindhe
источник
2
echoдобавляет новую строку в вывод, чтобы сделать ее полной, а не красивой.
Кусалананда
@Kusalananda При вводе printf textтекста текст появляется перед следующей строкой подсказки.
neverMind9