GNU/Linux >> Tutoriales Linux >  >> Linux

El valor hash MD5 es diferente de Bash y PHP

La respuesta de @Cyrus está exactamente en el punto de cómo resolver esto:para explicar, cuando se usa echo generará una nueva línea al final de la cadena. Como puede ver en este resultado en línea, hello con una nueva línea genera exactamente el MD5 que estaba obteniendo anteriormente. Usando -n suprime la nueva línea y luego le dará el resultado que esperaba.

Editar :

Puede verlo claramente si lo envía a hexdump , que muestra el hexadecimal de los bytes allí.

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

Ver el 0a (\n ) al final de la cadena

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

Con -n echo no pone una nueva línea (\n ) al final

Ahora con una cadena vacía

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

Solo el carácter de nueva línea

$ echo -n  "" | hd

Cadena vacía, entonces hexdump no muestra ninguna salida


Por defecto, echo incluye un carácter de nueva línea al final de la salida. Sin embargo, PHP y los sitios en línea que usó no incluyen la nueva línea. Para suprimir el carácter de nueva línea, use el -n bandera:

echo -n "hello" | md5sum

Salida:

5d41402abc4b2a76b9719d911017c592  -

Ver:help echo

o con printf:

printf "%s" "hello" | md5sum

Linux
  1. Generación de un hash SHA-256 desde la línea de comandos de Linux

  2. Variable en Bash Script que mantiene su valor desde la última vez que se ejecutó

  3. creando un directorio desde el nombre del archivo y moviendo bash

  4. Bash Shell Script:busque una bandera y tome su valor

  5. Alcance variable para scripts y funciones bash shell en el script

¿Imprimir línea coincidente y línea enésima de la línea coincidente?

LA MANERA FÁCIL de cómo SSH en Bash y WSL2 en Windows 10 desde una máquina externa

Los 30 mejores emuladores de terminal Linux y editores Bash

Canalizar hacia/desde el portapapeles en el script Bash

Restaurar stdout y stderr al valor predeterminado

¿Cuál es el uso de $# en Bash?