it-swarm.dev

Jak získat hash řetězce MD5 přímo v terminálu?

Jak získám MD5 hash řetězce přímo z terminálu?

Například chci řetězec abcdefg hashed. V současné době příkaz md5sum akceptuje pouze název souboru jako vstup. Chci jednoduše zadat následující řádek a vše se dá udělat.

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

Jak toho mohu dosáhnout?

204
Hamed Momeni

Můžete také říci něco takového:

~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4  -

V zásadě dělá to samé, co popisuje @enzotib, ale je možná o něco jednodušší.

268
jfmessier

Velmi jednoduché, přijímá stdin, tak

md5sum <<<"my string"

Chcete-li se vyhnout koncové řádce přidané Shell:

printf '%s' "my string" | md5sum
66
enzotib
$ echo -n 123456 | md5sum | awk '{print $1}'
e10adc3949ba59abbe56e057f20f883e

můžete vytvořit skript Shell.

Název skriptu je například md5.sh:

#!/bin/bash

echo   -n   $1 | md5sum | awk '{print $1}'

oprávnění vykonat:

 chmod +x md5.sh

Pak:

$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e

Pokud je váš systém MacOS. Tento skript musíte upravit:

$ echo -n 123456 | md5 | awk '{print $1}' 
e10adc3949ba59abbe56e057f20f883e
30
ty4z2008
openssl md5 filename
openssl sha1 filename

Pro řetězec potrubí obsah pomocí echo

echo -n 123456 | openssl md5
10
guest

Spuštění md5sum bez argumentů způsobí, že bude číst vstup z terminálu. Zadejte nebo vložte, co chcete, a až budete hotovi, stiskněte ctrl-d pro ukončení vstupu.

10
psusi

Moje rychlé hrabání na --help pro md5sum ukazuje, že příkaz:

md5sum -

pak zobrazí výzvu k jednoduchému zadání. Zadejte nějaký text a poté použijte Enter a pak Ctrl+D označit konec souboru pak způsobí md5sum vyplivnout MD5 surového textu, který jste zadali (včetně toho Enter, je to CR, IIRC).

Méně na typ a bez potrubí! A abyste se vyhnuli tomu, aby vaše heslo prostého textu bylo zaznamenáno v historii Shell! Woo!

Pokud nechcete, aby koncové CR (což je obvykle případ, pokud chcete hash heslo), nezasáhne Enter před Ctrl+D, zadejte Ctrl+D místo toho dvakrát.

4
Will

Ve svých skriptech jsem zjistil, že o tomto problému byste měli vědět 2 věci.

  • Nezáleží na tom, jestli uděláte echo "$myvariable" nebo echo -n "$myvariable" ale měli byste vždy použít doubleqoutes pro řetězce a vždy použít stejnou metodu. pokud ne, věci se nebudou shodovat.
  • ve výstupu získáte vždy koncové mezery a pomlčku, jak je ukázáno v příkladu:

    $ echo -n Welcome | md5sum
    7803ffcaea43bb81a439fde13b29bc35  -
    

zbavit se toho a zůstat jen s kódem 7803ffcaea43bb81a439fde13b29bc35, udělejte: echo "$myvariable" | md5sum | cut -d" " -f1

2

Existuje mnoho příkladů, jak toho dosáhnout, ale některé z nich nejsou rovnocenné, protože některé z nich explicitně nebo implicitně obsahují nový řádek a některé jiné nikoli.

Chtěl bych jasně určit, která z populárních metod zahrnuje nový řádek a které nikoli.

Zde je několik příkladů pro výpočet md5 hash BEZ koncové nové řádky (SPRÁVNÉ):

Použití souboru s textem:

$ echo -n "test" > test.txt
$ wc test.txt
0 1 4 test.txt
$ md5sum test.txt
098f6bcd4621d373cade4e832627b4f6  test.txt

Poznámka: -n in echo znamená: „nevytvářejte koncové řádky“.

Pomocí echo s -n v souladu:

$ echo -n "test" | md5sum
098f6bcd4621d373cade4e832627b4f6  -

Pomocí printf:

$ printf "%s" "test" | md5sum
098f6bcd4621d373cade4e832627b4f6  -

Používám pouze md5sum příkaz:

(Pojďme psát md5sum, lis Enter potom napište řetězec test a stiskněte dvojitou kombinaci Ctrl+d)

$ md5sum
test098f6bcd4621d373cade4e832627b4f6  -

Použitím md5sum - příkaz:

(Pojďme psát md5sum -, lis Enter potom napište řetězec test a stiskněte dvojitou kombinaci Ctrl+d)

$ md5sum -
test098f6bcd4621d373cade4e832627b4f6  -

Zde je několik příkladů pro výpočet md5 hash S koncem nového řádku (SO NOT CORRECT):

Použití souboru s textem:

$ echo "test" > test_n.txt
$ wc test_n.txt
1 1 5 test_n.txt
$ md5sum test_n.txt
d8e8fca2dc0f896fd7cb4cb0031ba249  test_n.txt

Pomocí echo BEZ -n v souladu:

echo "test" | md5sum
d8e8fca2dc0f896fd7cb4cb0031ba249  -

Pomocí zde řetězce :

$ md5sum <<< "test"
d8e8fca2dc0f896fd7cb4cb0031ba249  -

Používám pouze md5sum příkaz, ale s Enter klávesa po napsání textu:

(Pojďme psát md5sum, lis Enter potom napište řetězec test a stiskněte agaien Enter a jednou kombinace Ctrl+d)

$ md5sum
test
d8e8fca2dc0f896fd7cb4cb0031ba249  -

Použitím md5sum - příkaz, ale s Enter klávesa po napsání textu:

(Pojďme psát md5sum -, lis Enter potom napište řetězec test a stiskněte agaien Enter a jednou kombinace Ctrl+d)

$ md5sum -
test
d8e8fca2dc0f896fd7cb4cb0031ba249  -
1
simhumileco