游戏王5DS本十六夜秋子:用perl怎样编写RSA算法,要求大于512位的。

来源:百度文库 编辑:高校问答 时间:2024/05/05 22:09:47
下面的程序少位数的可以,但大点的就不行了,要求可以大于512位的,谁知道怎么用纯perl实现?

#!/usr/bin/perl -w
use strict;
use Math::BigInt;

my %RSA_CORE = (n=>133678782077299932976074715712967535129,e=>65537,d=>111837190327849581516634345112975489173);
my $N=new Math::BigInt($RSA_CORE{n});
my $E=new Math::BigInt($RSA_CORE{e});
my $D=new Math::BigInt($RSA_CORE{d});

print "Content-type:text/html\n\n";
print "N=$N<br>D=$D<br>E=$E<br>";

#my $mess="t";
#$mess=$ARGV[0] if @ARGV >= 1;
#print "原始串:",$mess,"<br>";

#my $r_cmess = RSA_ENCRYPT(\$mess);
#print "加密串:",$$r_cmess,"<br>";

#my $r_dmess = RSA_DECRYPT($r_cmess);
#print "解密串:",$$r_dmess,"<br>";

sub RSA_ENCRYPT
{
my $r_mess = shift @_;
my ($c,$i,$M,$C,$cmess);

for($i=0;$i < length($$r_mess);$i++)
{
$c=ord(substr($$r_mess,$i,1));
$M=Math::BigInt->new($c);
$C=$M->copy(); $C->bmodpow($D,$N);
$c=sprintf "%03X",$C;
$cmess.=$c;
}
return \$cmess;
}

sub RSA_DECRYPT
{
my $r_mess = shift @_;
my ($c,$i,$M,$C,$dmess);

for($i=0;$i < length($$r_mess);$i+=3)
{
$c=substr($$r_mess,$i,3);
$c=hex($c);
$M=Math::BigInt->new($c);
$C=$M->copy(); $C->bmodpow($E,$N);
$c=chr($C);
$dmess.=$c;
}
return \$dmess;
}
怎么?是没有人知道还是不愿意帮忙啊,分数不多,请大家帮忙呀.

呵呵~~!可惜帮不了你。你可以去新浪爱问,或者雅虎知识堂里面问问。或许有让你满意的答案。希望你早日找到满意的答案。