將散列字串保存在變數中

將散列字串保存在變數中

我需要使用 SHA-512 演算法對字串進行雜湊處理。我也有鹽。

我正在腳本中嘗試這樣:

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

其中 array[3] 是密碼,pass[0] 是雜湊演算法 (6),pass[1] 是鹽。

我究竟做錯了什麼?還有其他方法可以在 shell 腳本中執行 SHA512 嗎?

預先感謝您!

編輯:變數 inputHash 為空

答案1

您實際上並沒有解釋這一點,但看起來您正在嘗試在 Perl 腳本中使用 shell 變數。${array[3]}是第四個元素shell數組變數 $array。 Perl 對此一無所知,因此${array[3]}在 Perl 腳本中未定義。

你有兩種方法解決它。首先,也是最糟糕的,您可以在 Perl 腳本中使用雙引號而不是單引號,以便擴展 shell 變數:

$ 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

相關內容