C++中RSA中算次方的那个怎么求余啊,他老提示小数不行

 我来答
矮油嫑酱紫唉
2012-06-26 · TA获得超过336个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:225万
展开全部
模幂运算无需将幂算出再取模,那样中间结果太大,效率很低。如果需要自己实现模幂算法,请参见高爷爷的大作《计算机程序设计艺术(第二卷)》,幂指数按二进制位扫描,可以从低到高,也可以从高到低,两者计算法略微不同,这里给出从低到高扫描的方法,遇到bit1,则执行if里面的运算,否则,a平方并模m

程序没做太多的参数检查,例如m为0的情况,也没做优化,比如a是0或者1的情况。因为不是大数模幂,没有做滑动窗口、蒙哥马利算法之类的优化,直来直去直接计算。程序功能是计算a ^ p mod m,前提是这三个数都是unsigned int能装得下的

unsigned int mod_exp(unsigned int a, unsigned int p, unsigned int m)
{
unsigned int res = 1;
for (a = a % m; p != 0; p >>= 1)
{
if ((p & 0x01) != 0)
{
res = (res * a) % m;
}
a = (a * a) % m;
}
return res;
}

如果a、p、m都是大数(64bits以上),还是借助大数库比较好,很多密码学的库、ssl库等等都带,比如openssl、crypto++等等
文库下载429
2012-06-26 · 超过21用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:48.6万
展开全部
加密解密的时候算次方的数会比较大,只定义为int可能会数据溢出,应该定义为long long int或_int64,再模n
追问
78的91次方怎么办啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式