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

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

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

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

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

191
задан 22 July 2011 в 17:18

9 ответов

Можно также сказать что-то вроде этого:

~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4  -

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

253
ответ дан 22 November 2019 в 22:46

Очень простой, это принимает stdin, таким образом,

md5sum <<<"my string"

Избегать запаздывающей новой строки, добавленной оболочкой:

printf '%s' "my string" | md5sum
61
ответ дан 22 November 2019 в 22:46

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

10
ответ дан 22 November 2019 в 22:46

Мои быстрые вводят по абсолютному адресу в --help для md5sum демонстрирует что команда:

md5sum -

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

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

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

4
ответ дан 22 November 2019 в 22:46

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

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

    $ echo -n Welcome | md5sum
    7803ffcaea43bb81a439fde13b29bc35  -
    

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

2
ответ дан 22 November 2019 в 22:46
$ 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
28
ответ дан 22 November 2019 в 22:46
openssl md5 filename
openssl sha1 filename

Поскольку строка передает довольное по каналу эхо использования

echo -n 123456 | openssl md5
10
ответ дан 22 November 2019 в 22:46

Существует много примеров, чтобы сделать это, но некоторые из них не эквивалентны, потому что некоторые из них явно или неявно включают новую строку, и некоторые другие не делают.

Я хотел бы ясно указать, какой из популярных методов включает новую строку и которые не являются.

Вот некоторые примеры вычислению хеша 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  -
1
ответ дан 22 November 2019 в 22:46

В моем случае лучшее решение для хеширования простой строки:

md5hash=$(echo -n "myhashedstring" | md5sum | head -c 32)

приведет к 2e8f8b94e488a2f442a55951862612aa

0
ответ дан 30 July 2020 в 09:57

Другие вопросы по тегам:

Похожие вопросы: