
Larkdog
User
Nov 1, 2004, 12:34 PM
Post #16 of 21
(1654 views)
|
|
Re: [davorg] converting letters to corresponding numbers
[In reply to]
|
Can't Post
|
|
much thanks for all the help KevinR i teach high school math and we were learning matrices. well, in class, we used matrices to encrypt and decode messages. well, i thought it would be cool to provide this on my website using the same process...and finally my hard work (and kevinR's) have paid off...i fixed the bugs and it runs flawlessly! check it out ==> http://www.mrlarkins.com/cryptology.html kevin, i am posting my/our code for the encrypt.pl file (the decode.pl is similar) #!/perl/bin/perl use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); my %code_hash = ( a => 1, b => 2, c => 3, d => 4, e => 5, f => 6, g => 7, h => 8, i => 9, j => 10, k => 11, l => 12, m => 13, n => 14, o => 15, p => 16, q => 17, r => 18, s => 19, t => 20, u => 21, v => 22, w => 23, x => 24, y => 25, z => 26, '+' => 27, '.' => 28, '?' => 29, '_' => 27); my %decode_hash = ( 1 => 'a', 2 => 'b', 3 => 'c', 4 => 'd', 5 => 'e', 6 => 'f', 7 => 'g', 8 => 'h', 9 => 'i', 10 => 'j', 11 => 'k', 12 => 'l', 13 => 'm', 14 => 'n', 15 => 'o', 16 => 'p', 17 => 'q', 18 => 'r', 19 => 's', 20 => 't', 21 => 'u', 22 => 'v', 23 => 'w', 24 => 'x', 25 => 'y', 26 => 'z', 27 => '_', 28 => '.', 29 => '?'); my $q1 = new CGI; print $q1->header; my $message = $q1->param('message'); my @message = &encode($message); sub encode { my $message = shift; $message = lc $message; #convert to all lower case $message =~ s/[^a-zA-Z\.\?\s]//g; #get rid of unwanted characters $message =~ s/\s+/\+/g; #substitute + for spaces my @temp = split(//,$message); #split characters into @temp array s/\Q$_\E/$code_hash{$_}/gi for @temp; #convert message to code return(@temp); #return results } my $count; my $remainder; $count = @message; $remainder = $count % 3; while ($remainder == 1 || $remainder == 2) { push @message,'27'; $count = @message; $remainder = $count % 3; }; my @code; @code = (0,1,0,1,1,0,1,0,1); my $n1; my $p1; my @coded_message; $n1 = 0; $p1 = 0; until ($n1 == $count){ $coded_message[$p1] = ($code[0] * $message[$n1++]) + ($code[1] * $message[$n1++]) + ($code[2] * $message[$n1++]); $p1+=3; } $n1 = 0; $p1 = 1; until ($n1 == $count){ $coded_message[$p1] = ($code[3] * $message[$n1++]) + ($code[4] * $message[$n1++]) + ($code[5] * $message[$n1++]); $p1+=3; } $n1 = 0; $p1 = 2; until ($n1 == $count){ $coded_message[$p1] = ($code[6] * $message[$n1++]) + ($code[7] * $message[$n1++]) + ($code[8] * $message[$n1++]); $p1+=3; } $n1 = 0; until ($n1 == $count) { until ($coded_message[$n1] < 30){ $coded_message[$n1] = $coded_message[$n1] - 29; } $n1++; } $n1 = 0; until ($n1 == $count) { until ($coded_message[$n1] > 0) { $coded_message[$n1] = $coded_message[$n1] + 29; } $n1++; } @coded_message = &decode(@coded_message); sub decode { s/\Q$_\E/$decode_hash{$_}/gi for @coded_message; return (@coded_message); } print <<EOF <HTML> <HEAD> <TITLE>Encrypted Message!</TITLE> </HEAD> <BODY><center> <H1>Your message has been encrypted\!</H1> <p>Your message has been successfully encrypted.<BR><font color=orange size=4><b>@coded_message</b></font></p></center> </BODY> </HTML> EOF www.MrLarkins.com
(This post was edited by Larkdog on Nov 1, 2004, 12:38 PM)
|