Как я могу получить MD5- хеш строки прямо из терминала?
Например, я хочу, чтобы строка abcdefg
хэшировалась. В настоящее время команда md5sum принимает только имя файла в качестве ввода. Я хочу просто ввести следующую строку, и все будет сделано с.
md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f
Как я могу этого достичь?
command-line
md5sum
Хамед Момени
источник
источник
md5 -s abcdefg
Ответы:
Вы также можете сказать что-то вроде этого:
Он в основном делает то же самое, что описано @enzotib, но, возможно, немного проще.
источник
83218ac34c1834c26781fe4bde918ee4 -
-n
это обязательно. Без этого ваш хеш будет полностью неверным, поскольку он включает символ новой строки.-
в конце. @jfmessierОчень просто, он принимает стандартный ввод, поэтому
Чтобы избежать завершающей строки, добавленной оболочкой:
источник
<<<"
трубу в сценарии;echo string
побеждает за командную строку. Отлично сработано.printf
правильное использование . Если вы хотите получить сумму без-
, поставьте| cut -d ' ' -f 1
. Пример использования:sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1)
<<<
оператор иprintf
функция дают совершенно разные результаты для хеша md5! результат printf правильный!<<<
оператора отправляет новую строку в md5sum!Вы можете создать сценарий оболочки.
Например, имя сценария md5.sh:
разрешение на выполнение:
Затем:
Если ваша система MacOS. Вам нужно изменить этот скрипт:
источник
cut -d ' ' -f 1
md5() { echo -n $1 | md5sum | awk '{print $1}'; }
в .bashrc, а затем я могу использовать$ md5 test
в командной строке. спасибо за ответawk
команда:'$0=$1'
Запуск md5sum без аргументов вообще заставит его читать ввод с терминала. Введите или вставьте все, что вы хотите, и когда вы закончите, нажмите,
ctrl-d
чтобы завершить ввод.источник
ctrl+d
нужно нажать дважды, чтобы это работало.Для строкового канала содержимое с помощью echo
источник
Мое быстрое нажатие на
--help
formd5sum
показывает, что команда:затем даст подсказку для простого ввода. Ввод некоторого текста с последующим использованием Enterи затем Ctrl+ Dдля обозначения конца файла приводит
md5sum
к тому, что вы выплевываете MD5 введенного вами необработанного текста (в том числе Enterэто CR, IIRC).Меньше набирать и нет труб! И избегать записи вашего открытого текста в истории оболочки! Woo!
Если вы не хотите, чтобы этот конечный CR (который обычно имеет место, если вы хотите хэшировать пароль), не нажимайте Enterперед Ctrl+ D, вместо этого введите Ctrl+ Dдважды.
источник
В моих сценариях я обнаружил, что есть 2 вещи, которые вы должны знать об этой проблеме.
echo "$myvariable"
или ,echo -n "$myvariable"
но вы всегда должны использовать doubleqoutes для строк и всегда использовать один и тот же метод. если не вещи не будут совпадать.в выводе вы всегда получаете завершающий пробел и тире, как показано в примере:
чтобы избавиться от этого и остаться только с кодом
7803ffcaea43bb81a439fde13b29bc35
, выполните:echo "$myvariable" | md5sum | cut -d" " -f1
источник
-n
параметр, чтобы избежать вывода завершающего символа новой строки, который может привести к неверномуecho -n $myvariable | md5sum | cut -d" " -f1
Есть много примеров, чтобы сделать это, но некоторые из них не эквивалентны, потому что некоторые из них явно или неявно включают перевод строки, а некоторые другие нет.
Я хотел бы четко указать, какие из популярных методов включают перевод строки, а какие нет.
Вот несколько примеров вычисления хеша md5 БЕЗ завершающего перевода строки (ПРАВИЛЬНО):
Используя файл с текстом:
Примечание:
-n
вecho
значении: «не выводить завершающий перевод строки».Использование
echo
с-n
inline:Использование
printf
:Используя только
md5sum
команду:(Давайте напишем
md5sum
, нажмите, Enterзатем напишите строку,test
а затем нажмите двойную комбинацию Ctrl+ d)Используя
md5sum -
команду:(Давайте напишем
md5sum -
, нажмите, Enterзатем напишите строку,test
а затем нажмите двойную комбинацию Ctrl+ d)Вот несколько примеров для вычисления хэша md5 С завершающим символом новой строки (ТАК НЕ ПРАВИЛЬНО):
Используя файл с текстом:
Использование
echo
БЕЗ-n
inline:Используя здесь строки :
Используя только
md5sum
команду, но с Enterключом после написания текста:(Давайте напишем
md5sum
, нажмите, Enterзатем напишите строку,test
а затем нажмите agaien Enterи один раз комбинацию Ctrl+ d)Используя
md5sum -
команду, но с Enterключом после написания текста:(Давайте напишем
md5sum -
, нажмите, Enterзатем напишите строку,test
а затем нажмите agaien Enterи один раз комбинацию Ctrl+ d)источник