大侠 看了您的回答觉得您密码学一定很棒 小弟有个问题想请教 RSA加密问题

2024-12-03 21:21:34
推荐回答(3个)
回答1:

高幂取模,属于经典算法,
int pow_mod(int a,int b,int n)
{
int res=1;
while(b!=0)
{
if(b&1)
res=((__int64)res*a)%n;
a=((__int64)a*a)%n;
b>>=1;
}
return res;
}
这个函数能计算int32范围内的a^b mod n
可以算得你的10488256^78428387(mod78483073)=4210417

如果还要更大的数,Java中的BigInteger类提供了一个modPow函数,在Java中写BigInteger c=a.modPow(b,n);可以任意高精度,算法的原理和我这个函数是一样的

回答2:

存在数组中不得吗?
比如得到的数是123456789123456789123456789
n[0]=123456789
n[1]=123456789
n[2]=123456789

回答3:

有个针对m^e mod n的程序,叫模幂算法,不知道对你有没有帮助:
具体如下:
先将e表示成二进制形式:
ek ek-1 ..... e0 (如78428387=100101011001011100011100011)
s为输出,

程序过程如下:
s=1;
if(e0==1) s=m;
for(i=1,i<=k,i++)
{
m=m^2 mod n
if(ei==1)
s=s*m mod n
}
return s;

我只知道这个方法,高手谈不上,是个菜鸟。
希望能对你有所帮助。