加密++ rsa密钥进入缓冲区
crypto++ rsa key into buffer
我开始使用rsa加密解密文件,但我想将密钥保存到字符串等缓冲区中,以便我可以使用它
我知道我可以把密钥保存到这样的文件
AutoSeededRandomPool rng;
RSA::PrivateKey privateKey;
privateKey.GenerateRandomWithKeySize(rng, 2048);
RSA::PublicKey publicKey(privateKey);
Base64Encoder privkeysink(new FileSink("C:\1\privkey.txt"));
privateKey.DEREncode(privkeysink);
privkeysink.MessageEnd();
Base64Encoder pubkeysink(new FileSink("C:\1\pubkey.txt"));
publicKey.DEREncode(pubkeysink);
pubkeysink.MessageEnd();
但我不认为这是一个好主意,保存到文件,然后读取文件,有什么直接的方法吗?
AutoSeededRandomPool rng; RSA::PrivateKey privateKey; privateKey.GenerateRandomWithKeySize(rng, 2048); Base64Encoder privkeysink(new FileSink("C:\1\privkey.txt")); privateKey.DEREncode(privkeysink); privkeysink.MessageEnd(); ...
你有两件事要做。首先,如何创建和使用RSA密钥。第二,如何保存密钥。在此期间,您似乎增加了一个重新加载密钥的额外步骤。
键的创建看起来很好(您正在这样做):
privateKey.GenerateRandomWithKeySize(rng, 2048);
当你想保存它时,只需保存它(你正在做的):
privateKey.DEREncode(FileSink("privkey.der", true).Ref());
没有必要重新加载它。保存之后还是很好吃的。在这种情况下,只需使用它(您在这里添加了额外的步骤):
RSAES_OAEP_SHA_Decryptor dec(privateKey);
如果键被持久化到磁盘并且需要重新加载它,则:
privateKey.BERDecode(FileSource("privkey.der").Ref());
甚至:
RSAES_OAEP_SHA_Decryptor dec;
dec.AccessKey().BERDecode(FileSource("privkey.der").Ref());
我想把键保存到像string
这样的缓冲区中
这有点让我困惑,因为我不确定您的目标是基于从文件中往返键。回想一下,您可以直接使用该键:
RSAES_OAEP_SHA_Decryptor dec(privateKey);
但是如果你想把它保存到内存缓冲区,那么:
string buff;
privateKey.DEREncode(StringSink(buff).Ref());
或:
ByteQueue queue;
privateKey.DEREncode(queue);
如果你愿意,你仍然可以使用管道:
privateKey.DEREncode(Base64Encoder(new FileSink("privkey.der")).Ref());
一个相关的wiki页面是Keys and Formats
相关文章:
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- 允许从 std::map 的密钥窃取资源?
- TMap::Emplace() 在应用现有密钥时会覆盖吗?
- 在没有密钥的情况下读取密文的剩余噪声预算
- 如何修复无效的API密钥,IP或操作权限错误?
- 所有可能的链接生成器与64位密钥
- 如何在unordered_map中更改密钥?
- 获取当前密钥状态?
- curl_easy_perform() 失败:SSL 对等证书或 SSH 远程密钥不正常
- 将密钥发送到非前台的游戏窗口
- 有哪些方法可以对基于 256 位密钥的矩阵进行加扰?
- 如何在精灵表上的两个不同部分之间来回切换,同时用户仍使用 SFML 持有密钥
- 如何将CNG密钥转换为OpenSSL EVP_PKEY(反之亦然)?
- 运行密钥密码解密知道密钥?
- std::unordered_map 运算符 [] 是否对非现有密钥进行零初始化?
- 封装 std::map 以允许迭代,但没有直接密钥访问?
- 如果我使用同一个密钥推送用户数据两次,会发生什么
- 有没有办法检查过量的密钥缓冲区
- 加密++ rsa密钥进入缓冲区
- 正在将明文AES 128密钥导出到缓冲区/文件Windows Crypto API c++