2016-08-11 8 views
1

にRSA鍵iは、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(); 

のようなファイルが、私はそれをファイルし、ファイルを読むために保存することをお勧めだと思いませんか?

+0

https://github.com/weidai11/cryptopp/blob/06a7abc9c8b72ad0954d3e7c216aba5d87e27be1/datatest.cppにチェックを入れると、そこには「StringSink」が使用されます。他のテストにも 'ArraySink'があります。 – melak47

答えて

1
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です。