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

5792
pellea72

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

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

b1946ac92492d2347c6235b4d2611184 

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

5d41402abc4b2a76b9719d911017c592 

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

18
У меня работает на Windows с Total Commander, создающим контрольную сумму MD5. То же, что и онлайн-версия. Snark 15 лет назад 0
Спасибо, Снарк. Rudedog решил проблему при использовании md5 в командной строке, по крайней мере, для систем POSIX. Дайте ему +1, если можете. Я слишком новый. pellea72 15 лет назад 0

3 ответа на вопрос

36
Rudedog

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

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

echo -n hello | md5 

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

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

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

printf hello | md5 

Или даже:

printf "hello" | md5 
2
user1863

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

hello 

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

hello

CR + LF

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