GNU/Linux >> Znalost Linux >  >> Linux

Hodnota hash MD5 se liší od Bash a PHP

Odpověď @Cyrus je přesně na místě, jak to vyřešit - pro vysvětlení při použití echo na konci řetězce vypíše nový řádek. Jak můžete vidět na tomto online výstupu, hello s novým řádkem vydává přesně ten MD5, který jste dostávali dříve. Pomocí -n potlačí nový řádek a pak vám dá výsledek, který jste očekávali.

Upravit :

Můžete to jasně vidět, pokud to odešlete do hexdump , který ukazuje šestnáctkové číslo bajtů v něm.

$ echo "str_example" | hd
00000000  73 74 72 5f 65 78 61 6d  70 6c 65 0a              |str_example.|

Viz 0a (\n ) na konci řetězce

$ echo -n "str_example" | hd
00000000  73 74 72 5f 65 78 61 6d  70 6c 65                 |str_example|

S -n echo nevkládá nový řádek (\n ) nakonec

Nyní s prázdným řetězcem

$ echo  "" | hd
00000000  0a                                                |.|

Pouze znak Nový řádek

$ echo -n  "" | hd

Prázdný řetězec, tedy hexdump neukazuje žádný výstup


Ve výchozím nastavení echo obsahuje znak nového řádku na konci výstupu. PHP a online stránky, které jste použili, však nový řádek neobsahují. Chcete-li potlačit znak nového řádku, použijte -n příznak:

echo -n "hello" | md5sum

Výstup:

5d41402abc4b2a76b9719d911017c592  -

Viz:help echo

nebo pomocí printf:

printf "%s" "hello" | md5sum

Linux
  1. Jaký je rozdíl mezi $(stuff) a `stuff`?

  2. Bash skript k odstranění nejstaršího souboru ze složky?

  3. Uzavření vs. Neuvádíte hodnotu proměnné v uvozovkách v Bash?

  1. Generování hash SHA-256 z příkazového řádku Linuxu

  2. Obnovení stdout a stderr na výchozí hodnotu

  3. Jak mohu získat poslední číslo z řetězce v bash?

  1. Účel klíčového slova „dělat“ v Bash For Loops?

  2. Tisknout odpovídající čáru a N-tou čáru ze shodné čáry?

  3. Bash + Jak opustit sekundární skript a hlavní skript v obou případech?