⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_rsa.cpp

📁 完美的RSA算法C++实现,自定义的大数运算方法可以完成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 + -