📄 my_rsa.cpp
字号:
// MY_RSA.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
//#include "rsa_san.h"
#include <iostream>
#include "BigInt.h"
#include <stdio.h>
#include <atlstr.h>
#include <math.h>
#include <stack>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
//unsigned long a = f(255);
//假定明文是“thank you!”
CString MyWord = "thank you!";
CString temps;
cout<<"明文是:"<<MyWord<<endl;
//首先将明文转换成为整数数字
CBigInt m,e,n,d,c,m1,p,q;
int i;
//将明文用大整数表示
m.Get(MyWord);
m.Put(temps);
//输出对应的整数
printf("明文对应的大整数是:\n");
cout<<temps<<endl;
//生成大素数p,q,计算出大数n = p*q
p.GetPrime(2);
q.GetPrime(2);
//输出的p,q
printf("选出的p是:\n");
p.Put(temps);
cout<<temps<<endl;
printf("选出的q是:\n");
q.Put(temps);
cout<<temps<<endl;
n = p.Mul(q);
printf("选出的n是:\n");
n.Put(temps);
cout<<temps<<endl;
//选择e作为公开的加密密钥
e.m_ulValue[0] = 5003;
printf("选出的e是:\n");
e.Put(temps);
cout<<temps<<endl;
//计算保密密钥d
d = e.Euc((p.Sub(1)).Mul(q.Sub(1)));
printf("保密密钥d是:\n");
d.Put(temps);
cout<<temps<<endl;
//先进行加密
c = m.RsaTrans(e,n);
printf("密文是:\n");
c.Put(temps);
cout<<temps<<endl;
//再进行解密
m1 = c.RsaTrans(d,n);
printf("解密后的数据是:\n");
m1.Put(temps);
cout<<temps<<endl;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -