Почему мой хэш командной строки отличается от онлайн-результатов MD5?


21

На Mac OS X v10.5 (Leopard) PowerPC, если я это сделаю:

эхо "привет" | md5
в командной строке результат:

b1946ac92492d2347c6235b4d2611184

Но если я войду в привет на одном из хеш-сайтов MD5, таких как http://md5online.net/ , я получу:

5d41402abc4b2a76b9719d911017c592

Я делаю что-то неправильно? Если я хочу использовать MD5 на ходу, как я могу убедиться, что то, что я получаю в командной строке, будет соответствовать онлайн-инструментам md5?


У меня работает на Windows с Total Commander, создающим контрольную сумму MD5. То же, что и онлайн-версия.
Snark

Спасибо, Снарк. Rudedog решил проблему при использовании md5 в командной строке, по крайней мере, для систем POSIX. Дайте ему +1, если можете. Я слишком новый.
pellea72

Ответы:


40

Когда вы выводите эхо из командной строки, md5 вычисляет сумму из 6 символов - h, e, l, l, o плюс символ новой строки. Текст, который вы вводите на веб-сайте, не имеет новой строки.

Попробуй сделать

echo -n hello | md5

и это даст вам то, что вы ожидаете. -N говорит эхо не выводить символ новой строки.


К сожалению. Я не заметил тег '-n'. Ты прав, Рудедог. Это сработало. Благодарю.
pellea72

3

Вы также можете использовать printf вместо echo, что автоматически подавляет символ новой строки:

printf hello | md5

Или даже:

printf "hello" | md5

2

b1946ac92492d2347c6235b4d2611184 это md5 только строки

hello

5d41402abc4b2a76b9719d911017c592 является md5 из

hello

CR + LF

CR + LF - это новая строка Windows.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.