CRSAhead.h
class KeyProduce{
public:
KeyProduce(UINT model_N = 0,UINT Public_Key = 0,UINT Private_Key = 0);
~KeyProduce(){};
VOID GetTwainKey(UINT &model_N,UINT &Public_Key,UINT &Private_Key);
BOOL RSAKeyEncrypt(UINT divisor,UINT model_N,UINT Private_Key,UINT &result);
private:
VOID ProduceKeyAndModel(); // 产生密钥和模数
BOOL JudgePrime(UINT Prime); // 判断参数是否为素数
VOID order(UINT &ParamOne, UINT &ParamTwo); // 排序,大的在前
UINT gcd(UINT FN, UINT E); // 求两个数的最大公约数
UINT ExtendEuclid(UINT m, UINT bin); // 用扩展的欧几里德算法求乘法逆元
UINT ModularMultiplication (UINT divisor,INT Bit[],UINT model_N); // 做快速模幂算法
UINT primeP, primeQ;
UINT ucoprimeFN;
UINT modelN; // 模数
UINT PublicKey; // 公钥
UINT PrivateKey; // 私钥