Perl 및 /Bin /Sha1이 다른 결과를 제공하는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1843383

  •  12-09-2019
  •  | 
  •  

문제

왜 다음과 같은 반환 SHA1S가 왜 혼란스러워

$ perl -MDigest::SHA1 -E'say Digest::SHA1::sha1_hex("http://i.aultec.com/v/8066/Originals/1FTVX12585NA9832010.jpg");'
e1133fa3b7ea0bfb8ffa4d877932ed6c6fa10cef

$ echo "http://i.aultec.com/v/8066/Originals/1FTVX12585NA9832010.jpg" | sha1sum 
5c3731e83ae0184ed93b595b9f5604863dd331e6  -

어느 것이 맞습니까? AM / I / 잘못하고 있습니까?

$ perl -MDigest::SHA -E'say Digest::SHA::sha1_hex("http://i.aultec.com/v/8066/Originals/1FTVX12585NA9832010.jpg");'
e1133fa3b7ea0bfb8ffa4d877932ed6c6fa10cef

당신은 후계자에게 다이제스트가 옳은 것을 볼 수 있습니다 (Digest::SHA)

도움이 되었습니까?

해결책

둘 다 옳다. Echo 명령에는 마지막에 Newline이 포함되어 있습니다. (그리고 perl 문자열은 그렇지 않습니다) 시도해보십시오 echo -n ...

다른 팁

Perl은 입력 한 문자 그대로의 해시를 제공하는 반면 Echo는 Newline을 추가합니다. 당신이 말하면 echo Newline을 추가하지 않으려면 동일한 결과를 얻을 수 있습니다.

drewfus:~$ perl -MDigest::SHA1 -E'say Digest::SHA1::sha1_hex("foo");'
0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33
drewfus:~$ echo -n "foo" | sha1sum
0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33  -

이것은 너무 빈번한 실수이며 여러 번 만들었습니다. Echo 명령은 또한 Newline을 반환하고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top