Guardar cadena hash en una variable

Guardar cadena hash en una variable

Necesito codificar una cadena con el algoritmo SHA-512. Tengo sal también.

Estoy intentando en el script esto:

inputHash=$( perl -e 'print crypt("${array[3]}","\${pass[0]}\$${pass[1]}\$") . "\n"' )

Donde matriz[3] es la contraseña, paso[0] es el algoritmo hash (6) y paso[1] es la sal.

¿Qué estoy haciendo mal? ¿Alguna otra forma de hacer SHA512 en el script de shell?

¡Gracias de antemano!

Editar:La variable inputHash está vacía

Respuesta1

En realidad, no explica esto, pero parece que está intentando utilizar una variable de shell dentro del script Perl. ${array[3]}es el cuarto elemento de lavariable de matriz de shell $array. Perl no tiene conocimiento de esto, por lo que ${array[3]}no está definido en el script Perl.

Tienes dos formas de evitarlo. En primer lugar, y lo peor, puede utilizar comillas dobles en lugar de comillas simples en su script Perl para expandir las variables del shell:

$ array=("foo" "bar" "baz" "password")
$ pass=("sha512" "randomString")
$ perl -le "print crypt('${array[3]}','${pass[0]}' . '${pass[1]}')"
shY2thr3eF5bs

Una forma mucho mejor sería pasar las variables como argumentos a su script Perl:

$ perl -le 'print crypt($ARGV[0],$ARGV[1])' "${array[3]}" "${pass[0]}${pass[1]}"
shY2thr3eF5bs

información relacionada