Как я получаю хеш MD5 строки непосредственно от терминала?
Например, я хочу строку abcdefg
хешированный. В настоящее время md5sum управляют, только принимает имя файла как вход. Я хочу просто ввести следующую строку, и все быть покончило.
md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f
Как я могу достигнуть этого?
Можно также сказать что-то вроде этого:
~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4 -
Это в основном делает то же самое, как описано @enzotib, но возможно немного более просто.
Очень простой, это принимает stdin, таким образом,
md5sum <<<"my string"
Избегать запаздывающей новой строки, добавленной оболочкой:
printf '%s' "my string" | md5sum
Выполнение md5sum без аргументов вообще заставит это читать вход из терминала. Введите или вставьте то, что Вы хотите, и когда Вы сделаны, нажать ctrl-d
закончить вход.
Мои быстрые вводят по абсолютному адресу в --help
для md5sum
демонстрирует что команда:
md5sum -
затем даст подсказку для простого входа. Ввод некоторого текста и затем использования Входит и затем Ctrl+D, чтобы показать, что конец файла затем вызывает md5sum
для выкладывания MD5 необработанного текста, Вы вошли (включая это, Входят, это - CR, IIRC).
Меньше вводить и никакая передача по каналу! И предотвращение Вашего незашифрованного пароля, зарегистрированного в истории оболочки! Добейтесь!
Если Вы не хотите то запаздывание CR (который обычно имеет место, если Вы хотите хешировать пароль), не совершайте нападки, Входят перед Ctrl+D, вводят Ctrl+D дважды вместо этого.
В моих сценариях я нашел, что существует 2 вещи, которые необходимо знать об этой проблеме.
echo "$myvariable"
или echo -n "$myvariable"
но необходимо всегда использовать doubleqoutes для строк и всегда использовать тот же метод. если не вещи не будут соответствовать.в выводе Вы всегда получаете конечный пробел и тире как показано в примере:
$ echo -n Welcome | md5sum
7803ffcaea43bb81a439fde13b29bc35 -
избавиться от этого и остаться только с кодом 7803ffcaea43bb81a439fde13b29bc35
, сделайте: echo "$myvariable" | md5sum | cut -d" " -f1
$ 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
openssl md5 filename
openssl sha1 filename
Поскольку строка передает довольное по каналу эхо использования
echo -n 123456 | openssl md5
Существует много примеров, чтобы сделать это, но некоторые из них не эквивалентны, потому что некоторые из них явно или неявно включают новую строку, и некоторые другие не делают.
Я хотел бы ясно указать, какой из популярных методов включает новую строку и которые не являются.
Вот некоторые примеры вычислению хеша 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
и затем нажатие снова Входит и однажды комбинация Ctrl+d),
$ md5sum
test
d8e8fca2dc0f896fd7cb4cb0031ba249 -
Используя md5sum -
команда, но с клавишей Enter после записи текста:
(Давайте запишем md5sum -
, нажмите Enter, затем пишут строку test
и затем нажатие снова Входит и однажды комбинация Ctrl+d),
$ md5sum -
test
d8e8fca2dc0f896fd7cb4cb0031ba249 -
В моем случае лучшее решение для хеширования простой строки:
md5hash=$(echo -n "myhashedstring" | md5sum | head -c 32)
приведет к 2e8f8b94e488a2f442a55951862612aa