私はC#を使用しています。
私は次のようにDPAPI
を使用しようとしている、256バイトのサイズを持つ秘密鍵を持っているDPAPIを使用してRijndaelManagedキーを格納する
:
RijndaelManaged key = new RijndaelManaged();
byte[] buffer = new byte[32]
{
3,3,3,3,3,3,3,3,
5,5,5,5,5,5,5,57,
6,7,8,8,8,8,8,3,
1,33,36,39,39,39,31,37
};
byte[] secret = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
// Encrypt a copy of the data to the stream.
byte[] output = ProtectedData.Protect(buffer, secret, DataProtectionScope.CurrentUser);
key.Key = output;//Throw an exception
ProtectData.Protect
からの復帰ザッツoutput
配列は、そのkey.Key
ISN」サイズであることを私の問題tは(178バイト)をサポートし、私は例外だよそのRijndaelManagedキーにoutput
を挿入しようとしているとき:
「SYSTをem.Security.Cryptography.CryptographicException 'mscorlib.dllで発生しました
追加情報:指定されたキーは、このアルゴリズムの有効なサイズではありません。
どうすれば解決できますか?私のRijndaelManagedキーを保存するための他のソリューション?
は、私は別のproccess
おかげで私の秘密鍵にアクセスするためにもしたいです。
自分の秘密鍵を保護したいだけです – Evyatar
「秘密鍵」とは、非対称暗号が関係していることを意味します。 Rijndael(そしてAESであるRijndaelのサブセット)は対称アルゴリズムであり、秘密でなければならない "秘密鍵"がありますが、 "秘密鍵"はありません。それをディスクに保存しようとしていて、誰かがあなたのハードドライブを盗んでしまうのを恐れているなら、DPAPIが役に立ちます。それを使用するにはデータを保護解除する必要があります。現在のプロセスからキーを非表示にすることはできません。何かを保護する前に、保護すべき時期と誰から説明する必要があるかを記述します。 – bartonjs
ええ。私は理解しています。だから、私はそれをディスクに保存したい秘密鍵があると言っているように、プロセス/ユーザーログオンなどのデータだけを保護したいと思っています。私は本当に私の "本当の"秘密鍵誰かが私のexeにリバースエンジニアをした場合、非表示になります – Evyatar