#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
use Fcntl ":flock";
use POSIX;
use File::CounterFile;
use Crypt::Rijndael;
use Crypt::CBC;
require '../code_paths.conf';
[a lot of variable declarations go here]
#SCRIPT
setValues();
writeSubmissions();
exit;
#SUBROUTINES
sub setValues
{
[a lot of values are read in and set and worked with]
#here's where we build the line
# format for fixed-length line:
my $filebegin_format = "%-1.1s%-8.8s%6.6d%-17.17s%-25.25s%-16.16s%-1.1s%-9.9s%-9.9s%-8.8s%-35.35s%-25.25s%-2.2s%-12.12s%-3.3s"; #file layout for characters 1-177
my $request_format = "%-4.4s%-4.4s%-1.1s%-1.1s%-151.151s"; #file layout for requests 1-8
my $request9_format = "%-6.6s%-4.4s%-1.1s%-1.1s%-1.1s%-35.35s%-35.35s%-35.35s%-25.25s%-2.2s%-12.12s%-3.3s%-4.4s"; #file layout for request 9
my $fileend_format = "%-5.5d%-1.1s%-16.16s%-4.4s%-25.25s%-16.16s%-9.9s%-1.1s%-40.40s%-14.14s%-2.2s%-9.9s%-3.3s%-3.3s%-10.10s%-40.40s%-22.22s%-1.1s"; #file layout for characters 1630-1850
my $format = $filebegin_format . $request_format . $request_format . $request_format . $request_format . $request_format . $request_format . $request_format . $request_format . $request9_format . $fileend_format;
# build fixed-length line:
$fl_line = sprintf $format, $filetype, $batch, $serial_number, $sys_time, $tt_lastname, $tt_firstname, $tt_mi, $ssn, $ssn_cor, $dob, $tt_address, $tt_city, $tt_state, $tt_zip, $tt_country, $code_1, $date_1, $type_1, $priority_1, $filler, $code_2, $date_2, $type_2, $priority_2, $filler, $code_3, $date_3, $type_3, $priority_3, $filler, $code_4, $date_4, $type_4, $priority_4, $filler, $code_5, $date_5, $type_5, $priority_5, $filler, $code_6, $date_6, $type_6, $priority_6, $filler, $code_7, $date_7, $type_7, $priority_7, $filler, $code_8, $date_8, $type_8, $priority_8, $filler, $code_9, $date_9, $type_9, $exception_9, $priority_9, $addressee_9, $institution_9, $address_9, $city_9, $state_9, $zip_9, $country_9, $filler, $bill_total, $cc_type, $cc_number, $cc_exp, $cc_name, $cur_lastname, $cur_firstname, $cur_mi, $cur_address, $cur_city, $cur_state, $cur_zip9, $cur_pcode, $cur_country, $phone, $email, $filler, $reject;
$asr_line = uc($fl_line); #uppercase
$asr_line =~ tr/\000-\037/ /; # removing control characters, best option for speed
}
#subroutine to keep writing the plain file
sub writeSubmissions{
if ($filetype == 1 ) { $log_file = "pem.txt"; }
else { $log_file = "act.txt"; }
open LO, ">>$log_file";
flock LO, LOCK_EX;
print LO "$asr_line\n";
close LO;
}
####
sub writeSubmissions{
if ($filetype == 1 ) { $log_file = "pem.enc"; }
else { $log_file = "act_encrypted.enc"; }
$my_key = `openssl enc -bf-cbc -d -in key_file.txt -k encrypt`;
$cipher = Crypt::CBC->new( {'key' => $my_key,
'cipher' => 'Rijndael',
'regenerate_key' => 1,
'padding' => 'standard',
});
open FH_crypted, ">>$log_file";
#binmode FH_crypted;
flock FH_crypted, LOCK_EX;
$cipher->start('encrypting');
print FH_crypted $cipher->crypt($asr_line);
print FH_crypted $cipher->finish;
close FH_crypted;
}
####
#!/usr/bin/perl
use strict;
use warnings;
use Crypt::Rijndael;
use Crypt::CBC;
#--------------------------------------------------------------------
# Parameters
#--------------------------------------------------------------------
my $my_key;
my $plain_text;
my $encrypted = $ARGV[0];
my $cipher;
my $buffer;
my $decrypted = $encrypted;
$decrypted =~ s/\.enc/\.txt/;
$my_key = `openssl enc -bf-cbc -d -in key_file.txt -k encrypt`;
$cipher = Crypt::CBC->new( {'key' => $my_key,
'cipher' => 'Rijndael',
'regenerate_key' => 1,
'padding' => 'standard',
});
#--------------------------------------------------------------------
# Decryption
#--------------------------------------------------------------------
open(FH_encrypted, "<$encrypted");
open(FH_decrypted, ">$decrypted");
$cipher->start('decrypting');
while (read(FH_encrypted,$buffer,1851)) {
print FH_decrypted $cipher->crypt($buffer);
}
print FH_decrypted $cipher->finish;
close FH_encrypted;
close FH_decrypted;