Відповіді:
Ви також можете сказати щось подібне:
~$ 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