simpleCipher.pl
#!/usr/bin/env perl
use strict;
use warnings;
use Crypt::CBC;
my $usage = "Usage: ${0} encrypt key plaintext ciphertext\n Or\n";
$usage .= "${0} decrypt key ciphertext plaintext\n";
my $sum_args = $#ARGV + 1;
if ($sum_args != 4) {
print $usage;
exit 0;
}
my $key = $ARGV[1];
my $cipher = Crypt::CBC->new(
-key => "$key",
-cipher => 'Blowfish',
-keysize => 56
);
if ($ARGV[0] eq "encrypt") {
my $plainfile = $ARGV[2];
my $cipherfile = $ARGV[3];
my $buffer;
$cipher->start("e");
open(my $p, '<', "$plainfile") or die "${plainfile}: $!";
open(my $c, '>', "$cipherfile") or die "${cipherfile}: $!";
while (read($p, $buffer, 1024)) {
print $c $cipher->crypt($buffer);
}
close($p);
print $c $cipher->finish;
close($c);
}
elsif ($ARGV[0] eq "decrypt") {
my $cipherfile = $ARGV[2];
my $plainfile = $ARGV[3];
my $buffer;
$cipher->start("d");
open(my $c, '<', "$cipherfile") or die "${cipherfile}: $!";
open(my $p, '>', "$plainfile") or die "${plainfile}: $!";;
while (read($c, $buffer, 1024)) {
print $p $cipher->decrypt($buffer);
}
close($c);
print $p $cipher->finish;
close($p);
}
else {
print $usage;
}