如果我们只有公钥,如何使用RSA / OAEP加密/解密

时间:2015-07-12 08:59:23

标签: c++ rsa crypto++

我正在学习Crypto ++库。我已经阅读了很多例子,但是当程序没有生成密钥时,当程序只能访问公钥时,却没有找到如何加密/解密纯文本消息。

CryptoPP::RSA::PublicKey pubKey;
pubKey.Load(CryptoPP::StringSource(SSL_PUB_KEY, true, new CryptoPP::Base64Decoder()).Ref());
CryptoPP::RSAES_OAEP_SHA_Encryptor e(pubKey);

但之后该怎么办?

2 个答案:

答案 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

中加密了数据