AutoSeededRandomPool rng;
RSA::PrivateKey privateKey;
privateKey.GenerateRandomWithKeySize(rng, 2048);
Base64Encoder privkeysink(new FileSink("C:\\1\\privkey.txt"));
privateKey.DEREncode(privkeysink);
privkeysink.MessageEnd();
...
あなたはちょっと起こって二つのことがあります。まず、RSAキーを作成して使用する方法。次に、どのようにキーを保存しますか?その間に、あなたは鍵を再ロードするための余分なステップを追加したようだった。
キーの作成が正常に見える
(あなたがやっている):
privateKey.DEREncode(FileSink("privkey.der", true).Ref());
があります:あなたは、単に(あなたがやっている)、それを保存し、それを保存したい
privateKey.GenerateRandomWithKeySize(rng, 2048);
それをリロードする必要はありません。あなたがそれを保存した後もまだ良いです。キーは、その後、ディスクに永続化し、あなたがそれをリロードする必要がありますされている場合は
RSAES_OAEP_SHA_Decryptor dec(privateKey);
:
privateKey.BERDecode(FileSource("privkey.der").Ref());
あるいは:
この場合、単純に(ここで余分なステップを追加している)、それを使用
RSAES_OAEP_SHA_Decryptor dec;
dec.AccessKey().BERDecode(FileSource("privkey.der").Ref());
私は、文字列のようなバッファにキーを保存したい
私はあなたの目標がラウンドに基づいているかどうかわからないので、この種のことは混乱します。あなたが直接キーを使用することができます思い出し:
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());
関連するwikiページはKeys and Formatsです。
https://github.com/weidai11/cryptopp/blob/06a7abc9c8b72ad0954d3e7c216aba5d87e27be1/datatest.cppにチェックを入れると、そこには「StringSink」が使用されます。他のテストにも 'ArraySink'があります。 – melak47