MrQ_Q 2017-06-04 05:32 采纳率: 0%
浏览 1571

RSA算法不能正确解密恢复出明文

使用的是c语言 gmp库
我用下面这组数据带入算法运算的时候解密不能恢复明文
mpz_set_str(e,"65537",10);
mpz_set_str(n,"1230186684530117755130494958384962720772853569602684000930682370237375327267189248045201033832655086918491681399537211779227448404000986882410910322526476773383926313461670429214311602221240479274737794080665351419597459856902143413",10);
mpz_set_str(d,"1062994521338184055923217869193591999593614258305995010035621749951059169372124557376744961562831035479106213553500897603887838020180839555914663081145548424332284989327664283560563886777580397276589830493528318612618066192694331393",10);
mpz_set_str(m,"12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",10);
mpz_powm(c,m,e,n);
gmp_printf("c=%Zd\n",c);
mpz_powm(m,c,d,n);
gmp_printf("m=%Zd\n",m);

已经检查过公钥和私钥是正确的(即 e*d mod n的欧拉数=1),n是232位数,m是230位数

我用下面这组数据带入算法运算的时候解密是可以得到正确结果的
mpz_set_str(e,"5",10);
mpz_set_str(n,"633323",10);
mpz_set_str(d,"379037",10);
mpz_set_str(m,"497351",10);
mpz_powm(c,m,e,n);
gmp_printf("c=%Zd\n",c);
mpz_powm(m,c,d,n);
gmp_printf("m=%Zd\n",m);

求大佬帮看一下原因
难道是因为数设的太大了吗?应该不会吧

  • 写回答

1条回答

  • greetsmile 2017-06-07 03:01
    关注

    是因为是m的值太大了,应该小于n

    评论

报告相同问题?

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛