gpt4 book ai didi

c++ - crypto++ rsa key 进入缓冲区

转载 作者:行者123 更新时间:2023-11-30 05:24:02 24 4
gpt4 key购买 nike

我开始用 rsa 制作一个加密解密文件,但我想将 key 保存到字符串等缓冲区中,以便我可以使用它

我知道我可以像这样将 key 保存到文件中

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 key 。第二,如何保存 key 。在这两者之间,您似乎添加了重新加载 key 的额外步骤。

key 的创建看起来不错(您正在做的):

privateKey.GenerateRandomWithKeySize(rng, 2048);

当你想保存它时,只需保存它(你正在做的):

privateKey.DEREncode(FileSink("privkey.der", true).Ref());

无需重新加载它。保存后它仍然很好。在这种情况下,只需使用它(您在此处添加额外的步骤):

RSAES_OAEP_SHA_Decryptor dec(privateKey);

如果 key 持久化到磁盘并且您需要重新加载它,那么:

privateKey.BERDecode(FileSource("privkey.der").Ref());

甚至:

RSAES_OAEP_SHA_Decryptor dec;
dec.AccessKey().BERDecode(FileSource("privkey.der").Ref());

I want to save the keys into a buffer like string

这让我感到困惑,因为我不确定您的目标是基于从文件中往返 key 。回想一下,您可以直接使用 key :

RSAES_OAEP_SHA_Decryptor dec(privateKey);

但是如果你想把它保存到内存缓冲区,那么:

string buff;
privateKey.DEREncode(StringSink(buff).Ref());

或者:

ByteQueue queue;
privateKey.DEREncode(queue);

而且您仍然可以使用 the pipeline如果你喜欢:

 privateKey.DEREncode(Base64Encoder(new FileSink("privkey.der")).Ref());

相关的维基页面是 Keys and Formats .

关于c++ - crypto++ rsa key 进入缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38890809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com