私はこのスクリプトを持っています、うまくいきます:
#!/usr/bin/perl
$key = pack("H*","3cb37efae7f4f376ebbd76cd");
$str = "&4\=80CHB'";
$dec = decode($str);
print "Decoded string value: $dec\n";
sub decode{ #Sub to decode
@subvar=@_;
my $sqlstr = $subvar[0];
$cipher = unpack("u", $sqlstr);
$plain = $cipher^$key;
return substr($plain, 0, length($cipher));
}
STDIN から $str 変数を取得するように変更すると、すべての結果が台無しになります。
#!/usr/bin/perl
$key = pack("H*","3cb37efae7f4f376ebbd76cd");
print "Enter string to decode: ";
$str=<STDIN>;chomp $str;
$dec = decode($str);
print "Decoded string value: $dec\n";
sub decode{ #Sub to decode
@subvar=@_;
my $sqlstr = $subvar[0];
$cipher = unpack("u", $sqlstr);
$plain = $cipher^$key;
return substr($plain, 0, length($cipher));
}
最初のスクリプトは問題なく動作し、結果は次のとおりです。
デコードされた文字列値: mentos
2 番目のスクリプトは不適切です。
デコードされた文字列値: ot&¸ÝÖóvë½vÍ
私が間違っていることについて何か考えはありますか?ありがとう!