miracl大数库编写Paillier同态加密,powmod函数导致计算结果越界怎么解决呢

weixin_45710571 2021-03-26 12:45:09
int main() {
mip = mirsys(500, 0);//每个大数500位,类型根据需要转换
mip->IOBASE = 10;
//Encryption(mirvar(20)); //输入明文和随机数r
Pailliertesrt();
mirexit();
system("pause");
return 0;
}

big Encryption(big M){

big temp = mirvar(0);
big temp1 = mirvar(0);
big rr = mirvar(5);
ccode = mirvar(0);
//n = mirvar(0);
p = mirvar(59747);
q = mirvar(40387);
lamdba = mirvar(1206450978);
n = mirvar(2413002089);
n_square = mirvar(5822579081518363921);
g =mirvar( 2);
//ccode=g^m*r^n mod n_square
powmod(rr, n, n_square, temp); //计算ccode=rr^n mod n_square

powmod(g, M, n_square, temp1);
multiply(temp, temp1, temp);
powmod(temp, mirvar(1), n_square, ccode);
//这个函数行不通
printf("Paillier ccode:\n");
cotnum(ccode, stdout);
mirkill(temp);
mirkill(temp1);
mirkill(rr);
mirkill(p);
mirkill(q);
mirkill(g);
mirkill(n_square);
return ccode;
}
...全文
342 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_42039327 2021-05-07
  • 打赏
  • 举报
回复
有解决方案了吗
weixin_45710571 2021-05-07
  • 打赏
  • 举报
回复
引用 2 楼 qq_42039327 的回复:
有解决方案了吗
已解决,是大数库使用不正确的问题,先初始化大数mirvar(0),再进行赋值
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧