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