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

📄 rsa.cpp

📁 RSA加密解密源码
💻 CPP
字号:
#include "rsa.h"
#include "prime.h"

static vlong from_str( const char * s )
{
	vlong x = 0;
	while (*s)
	{
		x = x * 256 + (unsigned char)*s;
		s += 1;
	}
	return x;
}

void private_key::create(const char * r1, const char * r2 )
{
	// Choose primes
	prime_factory pf;
	p = pf.find_prime( from_str(r1) );
	q = pf.find_prime( from_str(r2) );
	if ( p > q )
	{
		vlong tmp = p;
		p = q;
		q = tmp;
	}
	// Calculate public key
	m = p*q;
	e = 65537;
	while ( gcd(p-1,e) != 1 || gcd(q-1,e) != 1 )
		e += 2;
	// Calculate private key
	d = modinv( e, (p-1)*(q-1) );  // d*e=1 mod (p-1)(q-1)
}

vlong public_key::encrypt( const vlong& plain )
{
	return modexp( plain, e, m );
}

vlong private_key::decrypt( const vlong& cipher )
{
	return modexp(cipher,d,m);
}

⌨️ 快捷键说明

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