我正在学习Crypto ++库。我已经阅读了很多例子,但是当程序没有生成密钥时,当程序只能访问公钥时,却没有找到如何加密/解密纯文本消息。
CryptoPP::RSA::PublicKey pubKey;
pubKey.Load(CryptoPP::StringSource(SSL_PUB_KEY, true, new CryptoPP::Base64Decoder()).Ref());
CryptoPP::RSAES_OAEP_SHA_Encryptor e(pubKey);
但之后该怎么办?
答案 0 :(得分:2)
如果使用公钥加密,则使用私钥对其进行解密。这是rsa的重点 - 非对称密钥加密,你需要密钥对。
RSA还支持您使用私钥加密(通常是简化的MAC哈希)的“邮件签名”,但随后您使用公钥对其进行解密。
答案 1 :(得分:0)
我已经知道怎么做了。我很想念RandonGenerator是什么,我认为我必须从钥匙上拿到它。
之后我做了以下事情:
CryptoPP::AutoSeededRandomPool rng;
string cipher;
CryptoPP::StringSource ss1(stringToEncrypt, true, new CryptoPP::PK_EncryptorFilter(rng, e, new CryptoPP::StringSink(cipher)));
现在我们在cipher