RSA加密、解密算法的C++实现(可以在VC6.0上运行): #include<iostream> #include<cmath>
using namespace std;
#define MAXLENGTH 500 //明文最大长度,即所允许最大整数个数
int size = 0;//保存要进行加密的正整数的个数 int p, q; //两个大素数
int n, phi; //n = p * q,phi = (p-1) * (q-1) 是n的欧拉函数值 int e; //{e, n}为公开密钥 int d; //{d, n}为秘密密钥
int clear[MAXLENGTH], Ciphertext[MAXLENGTH];//分别用于存放加//密前的明//文和加密后的密文
int DecryptionText[MAXLENGTH];//存放解密后的明文
//以下为加密算法void Encryption() {//加密算法cout << " 请输入两个较大的素数:" ; cin >> p >> q ;cout << " p = " << p << ", q = " << q << endl; n = p * q;//求解 n,phi = (p - 1) * ( q - 1 );//求解 n 的欧拉函数值 cout << " n = " << n << ", p非对称加密、解密算法RSA的C++实现_word文档在线阅读与下载_免费文档http://www.mianfeiwendang.com/doc/d83ae21a26eb0ef2373b3572/3hi = " << phi << endl; cout << " 请从[0," << phi - 1 << "]中选择一个与 " << phi << " 互素的数 e:";cin >> e; float d0;
for( int i = 1; ; i++){///求解乘法逆元
e * d ≡ 1 (mod phi) d0 = (float)(phi*i+1) / e;
if( d0 - (int)d0 == 0 )}d = (int)d0; cout << endl;cout << " e = " << e << ", d = " << d << endl;cout << " 公开密钥 Pk = {e,n} = {" << e << "," << n << "}" << endl; cout << " 秘密密钥 Sk = {d,n} = {" << d << "," << n << "}" << endl; cout << endl;cout << " 请输入要加密的小于 " << n << " 正整数(以-1结束):" << endl; cout << " 加密前的明文为:"; for( i = 0; i < MAXLENGTH; i++) for(int j = 0; j<maxlength; j++)="" { cin >> clear[j]; if( clear[j] == -1 ) break; count = e;while(count > 0){//对明文进行加密 Ciphertext =(clear)^ e mod n //加密算法Ciphertext[j] = (Ciphertext[j] * clear[j]) % n;count-- ; } }cout << " 密文为:" ; size = j;//实际密文长度 for(int k=0; k<j; k="" ++) cout << Ciphertext[k] << " "; cout << endl ; }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。