我正在使用 Crypto++ RSA api 加密和解密某些东西,RSAES_OAEP_SHA_Encryptor 和 RSAES_OAEP_SHA_Decryptor 都需要一个存储 pub/pri 密钥的文件。</p>
:( ,但我需要将密钥存储在我的 C++ 代码变量中,有什么方法可以避免访问文件吗?
还是有比 Crypto++ 更好的库?
粗略浏览一下用户指南和 API 文档表明您应该能够将 FileSource 替换为StringSource。
Crpyto++ Keys and Formats wiki 页面深入介绍了这一点。您可以使用DEREncodePrivateKey
、DEREncodePublicKey
、BERDecodePrivateKey
和BERDecodePublicKey
。这是带有两个示例的简短介绍。
第一个使用 DER 编码将密钥保存到文件中。
ByteQueue q1;
publicKey.DEREncodePublicKey(q1);
FileSink fs1("key_1.der", true);
q1.TransferTo(fs1);
第二个使用 DER 编码将密钥保存到字符串中。
ByteQueue q2;
publicKey.DEREncodePublicKey(q2);
string key_2;
StringSink ss2(key_2);
q2.TransferTo(ss2);
您可以使用BERDecodePublicKey
来恢复已保存的密钥。
使用私钥时,请使用DEREncodePrivateKey
和BERDecodePrivateKey
。