¿Cómo crear hash md5 a través de la línea de comandos de Arch Linux?

¿Cómo crear hash md5 a través de la línea de comandos de Arch Linux?

En Arch Linux, ¿cómo puedo crear un único hash md5 para una contraseña usando la línea de comando? Por supuesto, soy consciente de que existen algoritmos de hash de contraseñas seguros disponibles, mientras que md5 no lo es, pero esto es solo parte de un experimento.

Respuesta1

Simplemente echopóngalo en md5sum.

El primer resultado considerará un carácter de nueva línea al final de la cadena, antes de generar el hash.

$ echo P@ssword1 | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -

De lo contrario como@AFHindica que si no desea tener un carácter de nueva línea, haga lo siguiente:

$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -

Respuesta2

Ninguna de las respuestas menciona que con echo -n 'password' | …, escribirá su contraseña en un almacenamiento persistente, es decir, su historial.

Puede evitar esto, dependiendo del shell, anteponiendo al comando un espacio (pruebe esto para su shell). Lea la documentación de sus shells sobre cómo se maneja esto.

Alternativamente, puede usarlo md5sumdirectamente ejecutando md5sum, escribiendo la contraseña y luego Ctrl+D. No presione Enterentre la contraseña y Ctrl+D, a menos que desee incluir una nueva línea en el hash.

Respuesta3

Aquí hay un ejemplo usando openssl.

echo -n 'stack overflow' | openssl md5
(stdin)= 481b8423202598ecfb233c5fa68caf68

Openssl implementa varios algoritmos hash diferentes, si algún día necesitas uno diferente.

Respuesta4

Parece que todo el mundo sugiere utilizar echo, al menos la mayor parte del tiempo, afortunadamente, con -n, lo que aliviaunode sus problemas (que imprime una nueva línea al final).

Pero echono es necesariamente consistente. Tiene una serie de peculiaridades de comportamiento que debes tener en cuenta y puede ser incompatible entre sistemas. Es mejorusar printfen su lugar.

Por lo tanto, deberías utilizar

$ printf '%s' 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -
$

Con printf, si desea una nueva línea al final, debe agregarla usted mismo explícitamente:

$ printf '%s\n' 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -
$ echo 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -
$

en lugar de tener que pedir que no lo obtengan (y con la esperanza de echoque funcione igual en el sistema, este se ejecutará en algún momento posterior):

$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -
$

Para ampliar el punto sobrelas peculiaridades deechoque mencioné anteriormente, aquí hay algunos:

  • Funciona de manera diferente en varios sistemas. Muchos sistemas modernos permiten -nindicar echoque no se finalice la salida con una nueva línea, pero es posible que algunos no lo hagan. ¿Y si realmente quieres imprimir -n? Algunas implementaciones pueden diferir segúnajustesen el caparazón o el medio ambiente.
  • Maneja, o puede que no, algunas secuencias de caracteres (particularmente caracteres con barra invertida) de una manera especial. No es del todo descabellado tenerlas en las contraseñas, y POSIX no garantiza nada sobre el comportamiento del eco (su comportamiento es específicamenteindefinido) si el primer argumento es -no cualquiera de sus argumentos contiene barras invertidas.

Las respuestas a la pregunta vinculada anteriormente sobre el uso de printf en lugar de echo tienen varias más, así como enlaces adicionales para leer más si tiene curiosidad.

información relacionada