X-Git-Url: http://git.harvie.cz/?a=blobdiff_plain;f=perl%2Frsa.pl;h=7c8b316392cd685556ce94fe6f3ee1d4d1315537;hb=cb8003e63ff12aa8416c907395ee5a64db7704dc;hp=c442c6eae2e659fea8f4cd480139546bdc18f9f8;hpb=8d7c35871a3e8c5a32ff20ec539b456c2da88d5a;p=mirrors%2FPrograms.git diff --git a/perl/rsa.pl b/perl/rsa.pl index c442c6e..7c8b316 100755 --- a/perl/rsa.pl +++ b/perl/rsa.pl @@ -5,7 +5,7 @@ use bignum; #We'll need bignum for real messages sub rsa { #RSA (de)crypt function (message,modulus,exponent) my ($msg,$m,$e) = @_; - ($msg**$e)%($m); + ($msg**$e)%($m); #TODO: reimplement using chinese remainder theorem (this is too slow!!!) } sub isprime { #Tell if number is prime or not (suboptimal) @@ -40,8 +40,11 @@ print "\t[[[ Harvie's simple RSA demo ]]]\nfor study & testing purposes only (IN print "=== KEYS ===\nPUB: ($n,$e)\nPRV: ($n,$d)\n"; my $msg=1337; +$msg=$n-1; print "=== TEST ===\nMSG: $msg\n"; my $enc=rsa($msg,$n,$e); #encrypt print "ENC: $enc\n"; my $dec=rsa($enc,$n,$d); #decrypt - print "DEC: $dec\nTST: ".$msg.($msg==$dec?"=":"!=").$dec."\n"; + $test=($msg==$dec); + print "DEC: $dec\nTST: ".$msg.($test?"=":"!=").$dec."\n"; + exit !$test;