RSAEx.h
/*************************************************//*********Author:Cherish *************************//*********Date:2015-07-29*************************//*******利用大数计算系统实现RSA加密***************//*************************************************/#ifndef _RSAEX_H_ #define _RSAEX_H_#pragma once#define RSA_P "E34436F5F48A227B" //1>2^64 大素数1>2^63 #define RSA_P1 "E34436F5F48A227A" //1>2^64 大素数1>2^63 #define RSA_Q "A92FA24467C4E3E3" //大素数2#define RSA_Q1 "A92FA24467C4E3E2" //大素数2#define RSA_N "963251DC5A9C90D9F203A03C363BA411" //初始化模数n#define RSA_D "56157D29A89D77BF2F669A8F0B123CC9" //#define RSA_E "10001" //初始化公钥#define RSA_E1 "10000" //初始化公钥#define RSA_KeysizeBits 128#define RSA_HEX 16#define RSA_DECIMAL 10#define RSA_BINARY 2#define MAX_CHAR_LENGTH 512#define TST_PT "622H0W1BFEBFBFF0" //测试CPU序列号 明文 非16进制字符串#define TST_CT "E64D969126CFBAB020221B88C8CFC0D" //绑定IP 密文 16进制namespace RSAEx{ //CString 转Char* char* Topchar(const CString &strSource); //定值 加密 char* Encryption(const char* Plaintext); //定值 解密 char* Decryption(const char* Ciphertext); /* 函数功能:加密,得到密文 Plaintext:明文 pChar:素数1参考值,得到的素数大于该值 qChar:素数2参考值,得到的素数大于该值 eChar:公钥参考值,得到的公钥大于该值得素数 nType:当前大数计算系统使用的进制 RSA_HEX = 16进制;RSA_DECIMAL = 10进制 return:密文 example: char* p1= RSAEx::EncryptionEx("chenlu","BDCA157F56789A","CDAF9807654312","185642"); char* p2= RSAEx::DecryptionEx(p1,"BDCA157F56789A","CDAF9807654312","185642"); */ char* EncryptionEx(const char* Plaintext ,char* pChar =RSA_P1, char*qChar = RSA_Q1,char* eChar = RSA_E1 , int nType = RSA_HEX); /* 函数功能:加密,得到密文 Plaintext:密文 pChar:素数1参考值,得到的素数大于该值 qChar:素数2参考值,得到的素数大于该值 eChar:公钥参考值,得到的公钥大于该值得素数 nType:当前大数计算系统使用的进制 RSA_HEX = 16进制;RSA_DECIMAL = 10进制 return:明文 */ char* DecryptionEx(const char* Ciphetext ,char* pChar =RSA_P1, char*qChar = RSA_Q1,char* eChar = RSA_E1 , int nType = RSA_HEX); /* 函数功能:获取素数 Plaintext:密文 number:检测值,得到的素数大于该值 nType:当前大数计算系统使用的进制 RSA_HEX = 16进制;RSA_DECIMAL = 10进制 return: true:素数;false非素数 */ bool IsPrime(