如果我们只有 public 键,如何使用 RSA/OAEP encrypt/decrypt
How to encrypt/decrypt using RSA/OAEP if we have public key only
我正在学习 Crypto++ 库。我已经阅读了很多示例,但没有找到如何在程序只能访问 public 密钥时如何 encrypt/decrypt 纯文本消息,当程序不生成密钥时。
CryptoPP::RSA::PublicKey pubKey;
pubKey.Load(CryptoPP::StringSource(SSL_PUB_KEY, true, new CryptoPP::Base64Decoder()).Ref());
CryptoPP::RSAES_OAEP_SHA_Encryptor e(pubKey);
但是之后怎么办呢?
如果您使用 public 密钥加密,您将使用私钥对其进行解密。这就是 rsa 的全部要点 - 非对称密钥加密,你需要密钥对。
RSA 还支持 "message signing",您使用私钥加密(通常是减少的 MAC 哈希),但随后您使用 public 密钥对其进行解密。
我知道怎么做了。我误解了 RandonGenerator 是什么,我认为我必须从密钥中获取它。
之后我执行以下操作:
CryptoPP::AutoSeededRandomPool rng;
string cipher;
CryptoPP::StringSource ss1(stringToEncrypt, true, new CryptoPP::PK_EncryptorFilter(rng, e, new CryptoPP::StringSink(cipher)));
现在我们已经在 cipher
中加密了数据
我正在学习 Crypto++ 库。我已经阅读了很多示例,但没有找到如何在程序只能访问 public 密钥时如何 encrypt/decrypt 纯文本消息,当程序不生成密钥时。
CryptoPP::RSA::PublicKey pubKey;
pubKey.Load(CryptoPP::StringSource(SSL_PUB_KEY, true, new CryptoPP::Base64Decoder()).Ref());
CryptoPP::RSAES_OAEP_SHA_Encryptor e(pubKey);
但是之后怎么办呢?
如果您使用 public 密钥加密,您将使用私钥对其进行解密。这就是 rsa 的全部要点 - 非对称密钥加密,你需要密钥对。
RSA 还支持 "message signing",您使用私钥加密(通常是减少的 MAC 哈希),但随后您使用 public 密钥对其进行解密。
我知道怎么做了。我误解了 RandonGenerator 是什么,我认为我必须从密钥中获取它。
之后我执行以下操作:
CryptoPP::AutoSeededRandomPool rng;
string cipher;
CryptoPP::StringSource ss1(stringToEncrypt, true, new CryptoPP::PK_EncryptorFilter(rng, e, new CryptoPP::StringSink(cipher)));
现在我们已经在 cipher