Perl でバイナリ ファイルを暗号化してから復号化しようとしていますが、成功しません。復号化されたファイルは常に元のファイルとは異なります。Blowfish と AES (Rijandael) の両方を試しました。簡単な例を次に示します。
#!/usr/bin/perl
use Crypt::CBC;
use autodie;
my $cipher = Crypt::CBC->new(
-key => 'my secret key',
-cipher => 'Blowfish',
-header => 'none',
-iv => 'dupajasi'
);
$cipher->start('encrypting');
my $sourcefile = "fs9419105v001s.zip";
{
open(my $OUTF, '>', "$sourcefile.perl.crypt");
open(my $F, '<', $sourcefile);
print "[?] Encrypting ... \n";
while (read($F, $buffer, 1024)) {
print $OUTF $cipher->crypt($buffer);
}
print {$OUTF} $cipher->finish;
close($OUTF);
}
print "[?] Decrypting.,..... \n";
$cipher2 = Crypt::CBC->new(
-key => 'my secret key',
-cipher => 'Blowfish',
-header => 'none',
-iv => 'dupajasi'
);
{
open(my $OUTF, '>', "$sourcefile.perl.decrypt");
open(my $F, '<', "$sourcefile.perl.crypt");
while (read($F, $buffer, 1024)) {
print {$OUTF} $cipher2->decrypt($buffer);
}
print {$OUTF} $cipher2->finish;
close($OUTF);
}
誰かが何が間違っているかを見つけるのを手伝ってくれますか?