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

📄 rsa.h

📁 RSA 高级实现
💻 H
字号:
// RSA.h: interface for the CRSA class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_RSA_H__DD5631D5_2064_4DCC_B1C5_88F6B1A4F697__INCLUDED_)
#define AFX_RSA_H__DD5631D5_2064_4DCC_B1C5_88F6B1A4F697__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "BigNumber.h"
#include "RandomGenerator.h"

#define ERSAOK			0
#define ERSA_OUT_OF_MEM (-1)
class CRSA  
{
public:
	CBigNumber	p;
	CBigNumber	q;
	CBigNumber	e;
	CBigNumber	u;
	CBigNumber	n;
	CBigNumber	d;

	CRandomGenerator* m_prand;
public:
	CRSA();
	virtual ~CRSA();

	void InitRandGenerator(CRandomGenerator* prand)	{ m_prand = prand; };

	BOOL RsaPrimesGen(unsigned bits, unsigned pe, int (*progress)(void *arg, int c), void *arg, int *error);
	BOOL RsaKeyGen(unsigned pe, int (*progress)(void *arg, int c), void *arg, int *error);

	//these are very slowly interface.
	int rsaTestPrivateE(CBigNumber* bn, const PBYTE in, unsigned len);
	int rsaTestPublicD(const PBYTE in, unsigned len, const CBigNumber* bn);

	int rsaPublicEncrypt(CBigNumber *bn, const PBYTE in, unsigned len);
	int rsaPrivateEncrypt(CBigNumber *bn, const PBYTE in, unsigned len);
	int rsaPublicDecrypt(PBYTE buf, unsigned len, const CBigNumber *bn);
	int rsaPrivateDecrypt(PBYTE buf, unsigned len, const CBigNumber *bn);
};

#endif // !defined(AFX_RSA_H__DD5631D5_2064_4DCC_B1C5_88F6B1A4F697__INCLUDED_)

⌨️ 快捷键说明

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