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

📄 main.cpp

📁 RSA算法
💻 CPP
字号:
#include "Big.h"
#include <iostream>
#include <string>
#include <cmath>
#include <ctime>
using namespace std;
main(){
	clock_t t=clock();
	const int digits=8;
	Big prime_P,prime_Q;
	int count_of_table;//int Fermat_primes={3,17,65537};
	prime_P.odd_generator(digits);
//	prime_P.Output();
	
	
	
	while(1){
		prime_P=prime_P+2;
		if(!prime_tester_small(prime_P)){
			cout<<'.';
			continue;
		}
		if(!(count_of_table=fit_next_steps_to_choose_e(prime_P))){
			cout<<'!';
			continue;
		}
		if(prime_tester(prime_P))
			if(prime_tester(prime_P))
				if(prime_tester(prime_P))
					if(prime_tester(prime_P))
						if(prime_tester(prime_P))
							break;
						cout<<'*';
						
	}
	cout<<"\nP:"<<endl;
	prime_P.Output();
	prime_Q.odd_generator(digits);
	while(1){
		prime_Q=prime_Q+2;
		if(!prime_tester_small(prime_Q)){
			cout<<'.';
			continue;
		}
		if(!fit_next_steps_to_choose_e(prime_P,count_of_table)){
			cout<<'\'';
			continue;
		}
		if(prime_tester(prime_Q))
			if(prime_tester(prime_Q))
				if(prime_tester(prime_Q))
					if(prime_tester(prime_Q))
						if(prime_tester(prime_Q))
							break;
						cout<<'*';
						
	}
	cout<<"\nQ:"<<endl;
	prime_Q.Output();
	extern int Fermat_primes[];
	Big n=prime_P*prime_Q;
	cout<<"\nN (P*Q):"<<endl;
	n.Output();
	Big n1=(prime_P-1)*(prime_Q-1);
	cout<<"\nN1 ((P-1)*(Q-1)):"<<endl;
	n1.Output();	
	Big C,M;
	M.odd_generator(digits);
	cout<<"\nM (Original information):"<<endl;
	M.Output();
	Big e=Fermat_primes[count_of_table];
	cout<<"\ne:"<<endl;
	e.Output();
	C=Modular(M,e,n);
	cout<<"\nC (Secret info):"<<endl;
	C.Output();
	e.Clean();
	n1.Clean();
	Big d=Gcd(e,n1);
	cout<<"\nD (private key):"<<endl;
	d.Output();
	Big p=Modular(C,d,n);
	cout<<"\nP (Final):"<<endl;
	p.Output();
	cout<<dec<<"\nCost of time:(s) "<<(long)((clock()-t)/1000)<<endl;
				
				
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -