Вопрос Как получить хеш MD5 строки непосредственно в терминале?


Как получить MD5 хэш строки непосредственно из терминала?

Например, я хочу, чтобы строка abcdefg хэшируются. В настоящее время md5sum команда принимает только имя файла в качестве входного. Я хочу просто ввести следующую строку, и все будет сделано.

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

Как я могу это достичь?


151
2017-07-20 11:08


происхождения


md5 -s abcdefg - raitisd


ответы:


Вы также можете сказать что-то вроде этого:

~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4  -

Это в основном делает то же самое, что описано @enzotib, но, возможно, немного проще.


200
2017-07-20 11:47



Вы также хотите обновить результат примера, поскольку 7803ffca ... является результатом с добавленная новая строка. Правильный результат для команды выше 83218ac34c1834c26781fe4bde918ee4 - - Xanthir
почему в конце есть пробелы и тире? - keune
Пожалуйста, исправьте меня, если я ошибаюсь, но я думаю, что это связано с тем, что MD5sum применялся к потоку данных, а не к чтению содержимого файла, которое имеет имя, связанное с ним. - jfmessier
Обратите внимание, что -n является обязательным. Без него ваш хеш будет абсолютно неправильным, так как он включает символ новой строки. - Pithikos
Это помогло мне и в macOS, хотя это несколько другое: echo -n Welcome | md5 - Edward J. Stembler


Очень просто, он принимает stdin, поэтому

md5sum <<<"my string"

Чтобы избежать возврата новой строки, добавленной оболочкой:

printf '%s' "my string" | md5sum

59
2017-07-20 11:10



Предоставление как @messier, так и @enzotib голоса; оба относятся к моей категории «элегантной простоты». Я был бы готов использовать <<<" труба в скрипте; echo string выигрывает командная строка. Отлично сработано. - Tom
+1 для использования printfправильно. Если вы хотите получить сумму без -, положил | cut -d ' ' -f 1, Пример использования: sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1) - Lekensteyn
это странно, но <<< оператора и printf функция дает совершенно разные результаты для хеша md5! результат printf является правильным, хотя! - Hamed Momeni
кажется, используя <<< оператор отправляет новую строку в md5sum! - Hamed Momeni
Да, это так, как я сказал между первым и вторым примером - enzotib


$ 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

21
2018-03-09 04:54



Это слишком долго. - Gucho Ca
альтернатива awk: cut -d ' ' -f 1 - Blauhirn


Запуск md5sum без каких-либо аргументов приведет к тому, что он прочитает ввод с терминала. Введите или вставьте все, что хотите, и когда вы закончите, нажмите ctrl-d для завершения ввода.


9
2017-07-27 15:46



да, ты тоже прав. но ctrl+d необходимо дважды нажать, чтобы он работал. - Hamed Momeni
@James, если он не соответствует новой строке, да. Если вы нажмете его после попадания в него, ему потребуется только один раз. Когда он не соответствует новой строке, он просто заставляет все символы, введенные в строку до сих пор, обрабатываться немедленно, а не ждать новой строки. - psusi


openssl md5 filename
openssl sha1 filename

Для струнного канала содержимое, использующее эхо

echo -n 123456 | openssl md5

8
2017-12-10 11:13





Мой быстрый тыкать на --help для md5sum демонстрирует, что команда:

md5sum -

затем выдаст подсказку для простого ввода. Ввод текста, а затем использование Войти а потом Ctrl+D обозначать конец файла, а затем вызывает md5sum вытолкнуть MD5 необработанного текста, который вы ввели (в том числе Войти, это CR, IIRC).

Меньше, чтобы напечатать и нет трубопроводов! И избегайте использования вашего пароля открытого текста в истории оболочки! Woo!

Если вам не нужен этот трейлинг CR (который обычно имеет место, если вы хотите хешировать пароль), не ударяйте Войти до Ctrl+D, войти Ctrl+D дважды вместо этого.


3
2017-08-21 06:00





В моих сценариях я обнаружил, что есть две вещи, которые вы должны знать об этой проблеме.

  • Неважно, если вы это сделаете echo "$myvariable" или echo -n "$myvariable" но вы всегда должны использовать doubleqoutes для строк и всегда использовать тот же метод. если не все будет соответствовать.
  • на выходе вы всегда получаете конечное пространство и тире, как показано в примере:

    $ echo -n Welcome | md5sum
    7803ffcaea43bb81a439fde13b29bc35  -
    

избавиться от этого и остаться только с кодом 7803ffcaea43bb81a439fde13b29bc35, делать: echo "$myvariable" | md5sum | cut -d" " -f1


2
2017-08-02 13:39



Не забывайте, что -n параметр здесь, чтобы избежать вывода конечной новой строки, что приведет к неправильному md5: echo -n $myvariable | md5sum | cut -d" " -f1 - derFunk