Відповіді:
Ви також можете сказати щось подібне:
~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4 -
Це в основному те саме, що описано в @enzotib, але, можливо, трохи простіше.
83218ac34c1834c26781fe4bde918ee4 -
-nобов'язкове. Без цього ваш хеш буде абсолютно неправильним, оскільки він включає символ нового рядка.
-наприкінці. @jfmessier
Дуже просто, він приймає stdin, так
md5sum <<<"my string"
Щоб уникнути останнього нового рядка, доданого оболонкою:
printf '%s' "my string" | md5sum
<<<"трубу в сценарії; echo stringвиграє для командного рядка. Молодці.
printfправильне використання . Якщо ви хочете отримати суму без -, покладіть | cut -d ' ' -f 1. Приклад використання:sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1)
<<<оператор і printfфункція дають зовсім інші результати для md5 хешу! результат printf правдивий, хоча!
<<<оператора надсилає новий рядок до md5sum!
$ echo -n 123456 | md5sum | awk '{print $1}'
e10adc3949ba59abbe56e057f20f883e
ви можете створити сценарій оболонки.
Наприклад, ім'я сценарію md5.sh:
#!/bin/bash
echo -n $1 | md5sum | awk '{print $1}'
виконання дозволу:
chmod +x md5.sh
Тоді:
$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e
Якщо ваша система macOS. Вам потрібно змінити цей сценарій:
$ echo -n 123456 | md5 | awk '{print $1}'
e10adc3949ba59abbe56e057f20f883e
cut -d ' ' -f 1
md5() { echo -n $1 | md5sum | awk '{print $1}'; }в .bashrc, а потім можу використовувати $ md5 testв командному рядку. дякую за відповідь
awkкомандування:'$0=$1'
Запуск md5sum без жодних аргументів призведе до зчитування входу з терміналу. Введіть або вставте все, що завгодно, і по завершенні натисніть, ctrl-dщоб закінчити введення.
ctrl+dйого потрібно натиснути двічі, щоб воно працювало.
Мій швидкий ткік на --helpдля md5sumдемонструє, що команда:
md5sum -
то надасть підказку для простого введення. Введення деякого тексту, а потім використання, Enterа потім Ctrl+ Dдля позначення кінця файлу, приводить md5sumдо виплескування MD5 неочищеного тексту, який ви ввели (в тому числі Enter, це CR, IIRC).
Менше набирати та не мати трубопроводів! І уникайте того, щоб ваш пароль простого тексту був записаний в історію оболонки! Ву!
Якщо ви не хочете, щоб контур CR (що зазвичай буває, якщо ви хочете ввести хеш-пароль), не натискайте клавішу Enterперед Ctrl+ D, замість цього введіть Ctrl+ Dдвічі.
У своїх сценаріях я виявив, що ви маєте знати про цю проблему 2 речі.
echo "$myvariable"або , echo -n "$myvariable"
але ви завжди повинні використовувати doubleqoutes для рядків і завжди використовувати один і той же метод. якщо ні, то речі не збігаються.у виході ви завжди отримуєте пробіл та тире, як показано в прикладі:
$ echo -n Welcome | md5sum
7803ffcaea43bb81a439fde13b29bc35 -
щоб позбутися цього і залишитися лише з кодом 7803ffcaea43bb81a439fde13b29bc35, зробіть:echo "$myvariable" | md5sum | cut -d" " -f1
-nтут параметр, щоб уникнути виведення останнього рядка, що призведе до помилки md5:echo -n $myvariable | md5sum | cut -d" " -f1
Для цього є багато прикладів, але деякі з них не є рівнозначними, оскільки деякі з них явно чи неявно містять новий рядок, а інші - ні.
Я хотів би чітко вказати, який із популярних методів включає новий рядок, а який ні.
Ось кілька прикладів для обчислення хеша md5 БЕЗ проміжного нового рядка (ПРАВИЛЬНО):
Використання файлу з текстом:
$ echo -n "test" > test.txt
$ wc test.txt
0 1 4 test.txt
$ md5sum test.txt
098f6bcd4621d373cade4e832627b4f6 test.txt
Примітка: -n в echoдопомоги: «не виводить завершальний символ нового рядка».
Використання echoз -nвбудованим:
$ echo -n "test" | md5sum
098f6bcd4621d373cade4e832627b4f6 -
Використання printf:
$ printf "%s" "test" | md5sum
098f6bcd4621d373cade4e832627b4f6 -
Використовуючи лише md5sumкоманду:
(Давайте пишемо md5sum, натискаємо, Enterпотім пишемо рядок, testа потім натискаємо подвійну комбінацію Ctrl+ d)
$ md5sum
test098f6bcd4621d373cade4e832627b4f6 -
Використання md5sum -команди:
(Давайте пишемо md5sum -, натискаємо, Enterпотім пишемо рядок, testа потім натискаємо подвійну комбінацію Ctrl+ d)
$ md5sum -
test098f6bcd4621d373cade4e832627b4f6 -
Ось декілька прикладів для обчислення хеша md5 З контуром нового рядка (ТАК НЕ ПРАВИЛЬНО):
Використання файлу з текстом:
$ echo "test" > test_n.txt
$ wc test_n.txt
1 1 5 test_n.txt
$ md5sum test_n.txt
d8e8fca2dc0f896fd7cb4cb0031ba249 test_n.txt
Використання echoБЕЗ -nвбудованого тексту:
echo "test" | md5sum
d8e8fca2dc0f896fd7cb4cb0031ba249 -
Використовуючи тут рядки :
$ md5sum <<< "test"
d8e8fca2dc0f896fd7cb4cb0031ba249 -
Використовуючи лише md5sumкоманду, але Enterклавішу після написання тексту:
(Давайте пишемо md5sum, натискаємо, Enterпотім пишемо рядок, testа потім натискаємо agaien Enterі один раз комбінацію Ctrl+ d)
$ md5sum
test
d8e8fca2dc0f896fd7cb4cb0031ba249 -
Використовуючи md5sum -команду, але за допомогою Enterклавіші після написання тексту:
(Давайте пишемо md5sum -, натискаємо, Enterпотім пишемо рядок, testа потім натискаємо agaien Enterі один раз комбінацію Ctrl+ d)
$ md5sum -
test
d8e8fca2dc0f896fd7cb4cb0031ba249 -
md5 -s abcdefg