#!/usr/bin/perl use strict; use warnings; use Crypt::CBC; $|++; crypto('aes.pl', 'encrypting'); crypto('aes.pl', 'decrypting'); sub crypto { my $file = shift; my $action = shift; my $suffix = $action eq 'encrypting' ? 'aes' : 'no'; my $cipher = Crypt::CBC->new(-key => 'pass', -cipher => 'Rijndael'); my $buffer; my $buffer_size = 1024; open SOURCEFILE, '<', $file or die $!; open DESTFILE, '>', "$file.$suffix" or die $!; my $length = 0; $cipher->start($action); while ( read(SOURCEFILE, $buffer, $buffer_size) ) { $buffer = $cipher->crypt($buffer); syswrite(DESTFILE, $buffer, $buffer_size); } syswrite(DESTFILE, $cipher->finish, $buffer_size); close DESTFILE; close SOURCEFILE or die $!; return 1; }