开发者社区> 问答> 正文

RSA加密算法,已知e=31、n=35 求d,C=10怎么得出明文M和私钥d,最好能有详细的计算过程~

RSA加密算法,已知e=31、n=35 求d,C=10怎么得出明文M和私钥d,最好能有详细的计算过程~

展开
收起
知与谁同 2018-07-18 10:40:26 4301 0
2 条回答
写回答
取消 提交回答
  • 你太强了吧,私钥几乎推导不出来。这个难度太大了,而且n也不可能等于35,它的长度必须是128的倍数
    2019-07-17 22:56:45
    赞同 展开评论 打赏
  • n = p * q ,其中p,q是素数。由此可以得出p = 5,q=7
    所以现在就是计算 e乘以d的逆模 模(p-1)(q-1)同余于1。经过扩展的欧几里得算法(不知道网上搜),可以计算出d=7.

    通过下述程序计算的M为10.
    #include <iostream>
    using namespace std;
    unsigned long momi(unsigned long a,unsigned long e,unsigned long m)
    {
    unsigned long s ,t ,u;

    s = 1; t = a; u = e;
    while(u)
    {
    if (u & 1) s = (s * t)%m;
    u >>= 1;
    t = (t*t)%m;
    }
    return s;

    }

    int main(int argc, char* argv[])
    {
    for(int i = 0; i < 35; i++)
    {
    if (momi(i, 31, 30) == 10)
    {
    cout<<momi(i, 31, 35)<<endl;
    cout<<i<<endl;
    break;
    }
    }
    return 0;
    }
    2019-07-17 22:56:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载