¿Cómo obtengo el hash MD5 de una cadena directamente desde el terminal?
Por ejemplo, quiero la cadena abcdefghash. Actualmente, el comando md5sum solo acepta un nombre de archivo como entrada. Simplemente quiero ingresar la siguiente línea y hacer todo.
md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f
¿Cómo puedo lograr eso?
command-line
md5sum
Hamed Momeni
fuente
fuente

md5 -s abcdefgRespuestas:
También puedes decir algo como esto:
Básicamente hace lo mismo descrito por @enzotib, pero es quizás un poco más simple.
fuente
83218ac34c1834c26781fe4bde918ee4 --nes obligatorio. Sin él, tu hash estará totalmente equivocado ya que incluye el carácter de nueva línea.-al final? @jfmessierMuy simple, acepta stdin, así que
Para evitar la nueva línea final agregada por el shell:
fuente
<<<"tubería en un script;echo stringgana para la línea de comando. Bien hecho.printfcorrectamente. Si quieres tener la suma sin el-, pon| cut -d ' ' -f 1. Ejemplo de uso:sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1)<<<operador y laprintffunción están dando resultados completamente diferentes para md5 hash! ¡Sin embargo, el resultado de printf es correcto!<<<operador envía una nueva línea al md5sum!Puedes crear un script de shell.
Por ejemplo, el nombre del script es md5.sh:
permiso de ejecución:
Entonces:
Si su sistema es macOS. Necesita modificar este script:
fuente
cut -d ' ' -f 1md5() { echo -n $1 | md5sum | awk '{print $1}'; }Creé una función en .bashrc y luego puedo usarla$ md5 testen la línea de comando. gracias por la respuestaawkComando más corto :'$0=$1'Ejecutar md5sum sin ningún argumento hará que lea la entrada del terminal. Escriba o pegue lo que quiera, y cuando haya terminado, presione
ctrl-dpara finalizar la entrada.fuente
ctrl+ddebe presionarse dos veces para que funcione.Para canalizar el contenido utilizando echo
fuente
Mi rápido golpe en el
--helpparamd5sumdemuestra que el comando:luego dará un aviso para una entrada simple. Ingresar algo de texto y luego usar Entery luego Ctrl+ Dpara indicar el final del archivo hace
md5sumque escupe el MD5 del texto sin formato que ingresó (incluido eso Enter, es un CR, IIRC).Menos para escribir y sin tuberías! ¡Y evitando que su contraseña de texto plano se registre en el historial de shell! ¡Cortejar!
Si no desea ese CR final (que suele ser el caso si desea cifrar una contraseña), no presione Enterantes Ctrl+ D, ingrese Ctrl+ Ddos veces.
fuente
En mis scripts descubrí que hay dos cosas que debes saber sobre este problema.
echo "$myvariable"o no,echo -n "$myvariable"pero siempre debe usar las dobles claves para las cadenas y siempre usar el mismo método. si no, las cosas no coincidirán.en la salida siempre obtienes un espacio final y un guión como se muestra en el ejemplo:
para deshacerte de eso y quedarte solo con el código
7803ffcaea43bb81a439fde13b29bc35, haz lo siguiente:echo "$myvariable" | md5sum | cut -d" " -f1fuente
-nparámetro aquí para evitar generar la nueva línea final, lo que llevaría a un md5 incorrecto:echo -n $myvariable | md5sum | cut -d" " -f1Hay muchos ejemplos para hacer esto, pero algunos de ellos no son equivalentes porque algunos incluyen explícita o implícitamente la nueva línea, y otros no.
Me gustaría especificar claramente cuáles de los métodos populares incluyen la nueva línea y cuáles no.
Estos son algunos ejemplos junto con el cálculo del hash md5 SIN nueva línea final (CORRECTO):
Usando un archivo con texto:
Nota:
-nenechosignifica: "no muestre la nueva línea final".Utilizando
echocon en-nlínea:Utilizando
printf:Usando solo el
md5sumcomando:(Escribamos
md5sum, presione Enterluego escriba cadenatesty luego presione combinación doble Ctrl+ d)Usando el
md5sum -comando:(Escribamos
md5sum -, presione Enterluego escriba cadenatesty luego presione combinación doble Ctrl+ d)Aquí hay algunos ejemplos junto con el cálculo del hash md5 CON la nueva línea final (SO NOT CORRECT):
Usando un archivo con texto:
Usando
echoSIN en-nlínea:Usando aquí cadenas :
Usando solo el
md5sumcomando pero con la Entertecla después de escribir el texto:(Escribamos
md5sum, presione Enterluego escriba cadenatesty luego presione agaien Entery una vez combinación Ctrl+ d)Usando el
md5sum -comando pero con la Entertecla después de escribir el texto:(Escribamos
md5sum -, presione Enterluego escriba cadenatesty luego presione agaien Entery una vez combinación Ctrl+ d)fuente