暗号化と.NETFrameworkに慣れてきたところです。多くの例を見た後、.NETクラスを使用するときに混乱するパターンが繰り返されているのがわかりますRfc2898DeriveBytes
。このクラスを使用して暗号化キーと初期化ベクトルを取得する場合、同じメソッドが使用されているようです。
キーと初期化ベクトルの取得を示すMSDNブログのコードを次に示します。
byte[] salt = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 };
Rfc2898DeriveBytes pwdGen = new Rfc2898DeriveBytes("P@$$w0rd", salt, 1000);
// generate an RC2 key
byte[] key = pwdGen.GetBytes(16);
byte[] iv = pwdGen.GetBytes(8);
これは他の場所でも使われているのを見たことがあります。こんな感じだと思っていたのではないでしょうか...
// generate an RC2 key
byte[] key = pwdGen.GetKey();
byte[] iv = pwdGen.GetInitializationVector();
私はここで何かが欠けているに違いありません。キーと初期化ベクトル(IV)が単なる乱数である場合、適切なパスワードとソルトを使用すると、それらはどのように再度取得されますか?