Speichern einer gehashten Zeichenfolge in einer Variablen

Speichern einer gehashten Zeichenfolge in einer Variablen

Ich muss einen String mit dem SHA-512-Algorithmus hashen. Ich habe auch ein Salt.

Ich versuche im Skript Folgendes:

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

Dabei ist array[3] das Passwort, pass[0] der Hash-Algorithmus (6) und pass[1] das Salt.

Was mache ich falsch? Gibt es andere Möglichkeiten, SHA512 im Shell-Skript auszuführen?

Vielen Dank im Voraus!

Bearbeiten:Die Variable inputHash ist leer

Antwort1

Sie erklären das nicht wirklich, aber es sieht so aus, als würden Sie versuchen, eine Shell-Variable innerhalb des Perl-Skripts zu verwenden. ${array[3]}ist das vierte Element desShell-Array-Variable $array. Perl weiß hiervon nichts und ${array[3]}ist daher im Perl-Skript nicht definiert.

Es gibt zwei Möglichkeiten, das zu umgehen. Erstens, und das ist am schlimmsten, können Sie in Ihrem Perl-Skript doppelte Anführungszeichen statt einfacher Anführungszeichen verwenden, sodass Shell-Variablen erweitert werden:

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

Eine weitaus bessere Möglichkeit wäre, die Variablen als Argumente an Ihr Perl-Skript zu übergeben:

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

verwandte Informationen