#!/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;