아래의 함수를 사용하여 일회성 다운로드 링크 (원래 perlmonks에서)의 해시를 만듭니다. 이상한 일은 항상 같은 해시 결과를 얻는 것입니다.이상한 연기 Perl crypt()
나는 RTFMing을 해왔다. crypt() 함수가 $ exp의 마지막 8 문자를 가져 왔는지 확인하고 $ exp가 실제로 변경되었는지 확인했습니다. 나는 또한 crypt() 함수에 무작위 값을 수동으로 공급하려고 시도했다. 제대로 작동 한 것만 해시 결과가 변경되었다.
무엇이 여기에 있습니까?
use strict;
use CGI;
sub chash {
my $exp = $_;
my $key = 'abcd1234'; //not actual key
my $hash = crypt(substr($exp,-8,8),$key);
$hash = substr($hash, 2);
$hash =~ s/[^a-zA-Z0-9]//g; $hash = uc($hash);
return $hash;
}
my $exp = time() + 60;
my $hash = chash($exp);
my $download_url="http://script.pl?$exp-$hash";