SHA-512アルゴリズムを使用して文字列をハッシュする必要があります。塩もあります。
私のスクリプトでこれを試しています。
inputHash=$( perl -e 'print crypt("${array[3]}","\${pass[0]}\$${pass[1]}\$") . "\n"' )
ここで、array[3]はパスワード、pass[0]はハッシュアルゴリズム(6)、pass[1]はソルトです。
私は何が間違っていましたか?シェルスクリプトでSHA512を実行する他の方法はありますか?
よろしくお願いします!
編集する:inputHash変数が空です。
答え1
実際にはこれを説明していませんが、Perlスクリプトでシェル変数を使用したいようです。${array[3]}
4番目の要素ですシェル配列変数 $array
。 Perlはこれについて何も知らないので、${array[3]}
Perlスクリプトでは定義されていません。
これを解決する方法は2つあります。まず、最悪の場合、Perlスクリプトで一重引用符の代わりに二重引用符を使用してシェル変数を拡張できます。
$ array=("foo" "bar" "baz" "password")
$ pass=("sha512" "randomString")
$ perl -le "print crypt('${array[3]}','${pass[0]}' . '${pass[1]}')"
shY2thr3eF5bs
より良いアプローチは、変数をPerlスクリプトに引数として渡すことです。
$ perl -le 'print crypt($ARGV[0],$ARGV[1])' "${array[3]}" "${pass[0]}${pass[1]}"
shY2thr3eF5bs