RSA.zip

  • anameless123
    了解作者
  • C/C++
    开发工具
  • 1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 0
    下载次数
  • 2019-06-09 11:08
    上传日期
简单实现了RSA算法加密以及解密,不涉及文件读写。
RSA.zip
  • RSA.cpp
    2.5KB
内容介绍
 #include <iostream> #include<math.h> using namespace std; typedef long long LL; //编写一个模长为32比特的RSA加解密算法即寻找两个16比特的素 //数,e = 5为公钥,计算相应的私钥,对消息abc(ASCII码表示)用基 //本的RSA算法加密,并进行解密验证 //****************************素数检验算法begin********************************* LL mulmod(LL a, LL b, LL p) { LL d = 1; a = a % p; while (b > 0) { if (b & 1) d = (d * a) % p; a = (a * a) % p; b >>= 1; } return d; } bool witness(LL a, LL n) { LL d = n - 1; if (n == 2) return true; if (!(n & 1)) return false; while (!(d & 1)) d = d / 2; LL t = mulmod(a, d, n); while ((d != n - 1) && (t != 1) && (t != n - 1)) { t = mulmod(t, 2, n); d = d << 1; } return (t == n - 1) || (d & 1); } bool isprime(LL n)//米勒拉宾算法——素性测试 { int a[3] = { 2,7,61 }; for (int i = 0; i < 3; i++) if (!witness(a[i], n)) return false; return true; } //*******************************素数检验算法end******************************* //快速指数算法 // a^k=b(mod m) LL FastExp(LL a, LL k, LL n) { LL b = 1; while (k >= 1) { if (k % 2) b = (a * b) % n; a = (a * a) % n; k /= 2; } return b; } int main() { LL p, q; LL i = 62213; while (1) { if (isprime(i)) { p = i; cout << "p=" << i << endl; break; } i++; }//产生p,p>60000 i = 51234; while (1) { if (isprime(i)) { q = i; cout << "q=" << i << endl; break; } i++; }//产生q,q>50000.所以p,q都16位,n有32位 LL n = p * q; cout << "n=" << n << endl; LL fn = (p - 1) * (q - 1); cout << "φ(n)=" << fn << endl; LL e = 5; cout << "e=" << e << endl; LL d = fn / e; while (1) { if ((d * e) % fn == 1) { cout << "e*dmodφ(n)=1; 私钥d=" << d << endl; break; } d++; }//寻找结果为2550094765,过程时间较长约为10s,若在此不再测试请执行下面的代码 /*d = 2550094765; cout << "e*dmodφ(n)=1; 私钥d=" << d << endl;*/ //以{e,n}为公开钥,{d,p,q}为秘密钥 //abc ASCII转化结果为979899 LL m = 979899; cout << "message=" << m << endl; LL c = FastExp(m,e,n); cout << "加密结果c=" << c << endl; //LL k = (((m * m) % n) * ((m * m) % n) * m在这里×m以后就会越界,只能用快速幂) % n; m = FastExp(c, d, n); cout << "解密结果m=" << m << endl; return 0; }
评论
    相关推荐
    • rsa.zip
      Testing Schnorr's relation finding algorithm with n on RSA-moduli ofbits
    • RSA.rar
      实现RSA的加密解密,使用java。在程序中输入加密字段。
    • RSA.rar
      RSA算法加密和解密,代码简洁易懂,附有说明。
    • rsa.rar
      实现rsa算法运用vc++软件完美实现。。。。。。。。。。。。。。
    • RSA Algorithm.rar
      RSA算法为非对称加密算法,进行加密和解密的操作需要有两个密钥,这两个秘钥分别为公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。公开密钥和私有密钥为一对,如果对数据进行加密使用公开...
    • RSA2.0.zip
      RSA加密解密的c语言实现方案,C language implementation of RSA encryption and decryption
    • rsa.rar
      基于C#的RSA 加签验签测试工具源代码。
    • rsa.zip
      rsa2048位程序,RISCV架构,基于Botan库
    • RSA.zip
      int整数范围内的RSA算法,c语言实现
    • 软件开发计划书 .asp.rar
      一个完整的项目开发文档,可以看看.没有坏处.