用perl怎样编写RSA算法,要求大于512位的

用perl怎样编写RSA算法,要求大于512位的

用perl怎样编写RSA算法,要求大于512位的
下面的程序少位数的可以,但大点的就不行了,要求可以大于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;
}
Math::BigInt 的文档里 Math::BigInt 的文档里
$x = Math::BigInt->new(12345678890123456789); # bad
$x = Math::BigInt->new('12345678901234567890'); # good

你的 %RSA_CORE 里数字应该 '' 起来。如果你想了解其他人是怎么在 Perl 里做 RSA ,看看 CPAN 里的 RSA 相关模块。
to qiang:--谢谢你的回.
to qiang:
谢谢你的回答!但用引号括起来一样不行,小数倒可以,大数就不行了,不知道是不是表示数的范围太大了。
xiexie.