해시된 문자열을 변수에 저장

해시된 문자열을 변수에 저장

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]}네 번째 요소이다.쉘 배열 변수 $array. Perl은 이에 대해 알지 못하므로 ${array[3]}Perl 스크립트에서는 정의되지 않습니다.

두 가지 방법이 있습니다. 첫째, 최악의 경우 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

관련 정보