¿Cómo obtengo el hash MD5 de una cadena directamente desde el terminal?
Por ejemplo, quiero la cadena abcdefg
hash. 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 abcdefg
Respuestas:
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 -
-n
es 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 string
gana para la línea de comando. Bien hecho.printf
correctamente. 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 laprintf
funció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 1
md5() { echo -n $1 | md5sum | awk '{print $1}'; }
Creé una función en .bashrc y luego puedo usarla$ md5 test
en la línea de comando. gracias por la respuestaawk
Comando 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-d
para finalizar la entrada.fuente
ctrl+d
debe presionarse dos veces para que funcione.Para canalizar el contenido utilizando echo
fuente
Mi rápido golpe en el
--help
paramd5sum
demuestra 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
md5sum
que 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" " -f1
fuente
-n
parámetro aquí para evitar generar la nueva línea final, lo que llevaría a un md5 incorrecto:echo -n $myvariable | md5sum | cut -d" " -f1
Hay 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:
-n
enecho
significa: "no muestre la nueva línea final".Utilizando
echo
con en-n
línea:Utilizando
printf
:Usando solo el
md5sum
comando:(Escribamos
md5sum
, presione Enterluego escriba cadenatest
y luego presione combinación doble Ctrl+ d)Usando el
md5sum -
comando:(Escribamos
md5sum -
, presione Enterluego escriba cadenatest
y 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
echo
SIN en-n
línea:Usando aquí cadenas :
Usando solo el
md5sum
comando pero con la Entertecla después de escribir el texto:(Escribamos
md5sum
, presione Enterluego escriba cadenatest
y 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 cadenatest
y luego presione agaien Entery una vez combinación Ctrl+ d)fuente