資源簡介
具體描述參考 https://blog.csdn.net/iamqianrenzhan/article/details/88583822

代碼片段和文件信息
//#include?“D:\cryptopp562\randpool.h“
//#include?“D:\cryptopp562\rsa.h“
//#include?“D:\cryptopp562\hex.h“
//#include?“D:\cryptopp562\files.h“
//#include?“D:\cryptopp562\osrng.h“
//#include?“D:\cryptopp562\base64.h“
#include?“randpool.h“
#include?“rsa.h“
#include?“hex.h“
#include?“files.h“
#include?“osrng.h“
#include?“base64.h“
#include?
using?namespace?CryptoPP;
using?namespace?std;
//根據長度生成公鑰和私鑰,并分別保存到pubFilename文件和privFilename文件
void?GenerateRSAKey(unsigned?int?keyLength?const?char?*privFilename?const?char?*pubFilename)
{
AutoSeededRandomPool?rng;
InvertibleRSAFunction?privkey;
privkey.GenerateRandomWithKeySize(rng?keyLength);
base64Encoder?privkeysink(new?FileSink(privFilename));??//“privkey.txt“
privkey.DEREncode(privkeysink);
privkeysink.MessageEnd();
RSAFunction?pubkey(privkey);
base64Encoder?pubkeysink(new?FileSink(pubFilename));??//“pubkey.txt“
pubkey.DEREncode(pubkeysink);
pubkeysink.MessageEnd();
}
//把字符串plain中的內容用pubFilename文件中的公鑰加密數據并保存到encryptedFilename中。
void?Encrypt(const?string?&plain?const?char?*pubFilename?const?char?*encryptedFilename)
{
RSAES_OAEP_SHA_Encryptor?pubkey(FileSource(pubFilename?true?new?base64Decoder));
SecByteBlock?sbbCipherText(pubkey.CiphertextLength(plain.size()));
//sbbCipherText.begin();
AutoSeededRandomPool?rng;
pubkey.Encrypt(
rng
(byte?const*)plain.data()
plain.size()
sbbCipherText.begin());
FileSink(encryptedFilename).Put(sbbCipherText.begin()?sbbCipherText.size());
}
void?Encrypt2(const?string?&plainconst?char?*encryptedFilename)
{
//RSAES_OAEP_SHA_Encryptor?pubkey(FileSource(pubFilename?true?new?base64Decoder));
string?pub?=?“MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQC1f+WV5dAiVb2w1lgf21Wz84Uuou1TwCJ+\
ivxcpijobsHQLOLMakYSyRonH6SQJtL5CHXycBubA9sS7F2nVG2fMn6z9Ev11nu7J4IPPF9u\
v?/?ZqwAIlXwxVPsl4K69rWmdP4i5ezj++I7nC?+?kX6qjxpcyhnQalKAl2OC8AMNEo0awIBEQ?==?“;
RSAES_OAEP_SHA_Encryptor?pubkey(StringSource(pub?true?new?base64Decoder));
SecByteBlock?sbbCipherText(pubkey.CiphertextLength(plain.size()));
//sbbCipherText.begin();
AutoSeededRandomPool?rng;
pubkey.Encrypt(
rng
(byte?const*)plain.data()
plain.size()
sbbCipherText.begin());
FileSink(encryptedFilename).Put(sbbCipherText.begin()?sbbCipherText.size());
}
//用privFilename文件中的私鑰解密encryptedFilename文件中的加密內容,并返回解密內容。
string?Decrypt(const?char?*privFilename?const?char?*encryptedFilename)
{
string?strContents?recovered;
FileSource(encryptedFilename?true?new?StringSink(strContents));
AutoSeededRandomPool?rng;
RSAES_OAEP_SHA_Decryptor?privkey(FileSource(privFilename?true?new?base64Decoder));
StringSource(strContents?true?new?PK_DecryptorFilter(rng?privkey?new?StringSink(recovered)));
return?recovered;
}
string?Decrypt2(const?char?*encryptedFilename)
{
string?pri?=?“MIICdAIBADANBgkqhkiG9w0BAQEFAASCAl4wggJaAgEAAoGBALV/5ZXl0CJVvbDWWB/bVbPz\
hS6i7VPAIn6K?/?FymKOhuwdAs4sxqRhLJG
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????..A..H.?????39936??2019-03-16?16:34??RSA\.vs\RSA\v14\.suo
?????文件???????7164??2019-03-19?01:50??RSA\RSA\main.cpp
?????文件???????6488??2019-03-16?10:09??RSA\RSA\RSA.vcxproj
?????文件???????1246??2019-03-15?09:38??RSA\RSA\RSA.vcxproj.filters
?????文件???????1294??2019-03-14?23:31??RSA\RSA\RSATools.cpp
?????文件????????795??2019-03-14?23:24??RSA\RSA\RSATools.h
?????文件???????1774??2019-03-16?00:43??RSA\RSA\test.cpp
?????文件???????1291??2019-03-14?22:15??RSA\RSA.sln
?????目錄??????????0??2019-03-14?22:15??RSA\.vs\RSA\v14
?????目錄??????????0??2019-03-14?22:15??RSA\.vs\RSA
????...D.H.?????????0??2019-03-14?22:15??RSA\.vs
?????目錄??????????0??2019-03-24?06:55??RSA\RSA
?????目錄??????????0??2019-03-24?06:55??RSA
-----------?---------??----------?-----??----
????????????????59988????????????????????13
評論
共有 條評論