2017-11-28 6 views
3

次のようになりSystem.Security.CryptographyでAESコードを使用して暗号化する方法を示す例のほとんどは:C#System.Security.Cryptography - キーとIVを2回指定するのはなぜですか?

using (Aes aes = Aes.Create()) 
{ 
    aes.Key = Key; 
    aes.IV = IV; 
    ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV); 

は二回のキーとIVを特定する必要がある - 一度AESオブジェクトへと一回CreateEncryptor()関数に?または、この場合、すでにキーとIVを指定しているので、引数を取らないCreateEncryptor()の形式を呼び出すことはできますか?

答えて

6

あなたはそうする必要はありません。

ここ
public virtual ICryptoTransform CreateEncryptor() { 
    return CreateEncryptor(Key, IV); 
} 

the docが言うことだ:

は、現在のKeyプロパティおよび初期化ベクトルと、対称暗号化オブジェクトを作成し、プロパティを使用した場合は、値を指定するには、(パラメータなし)the CreateEncryptor() overloadを使用することができます(IV)である。

それとも、プロパティの設定を省略し、他の暗号/暗号解読を作成するために、その後aesオブジェクトを使用しない場合の引数でオーバーロードを使用することができます。

1

これはAesとencryptorインスタンスの使用方法によって異なります。 encryptorを作成するには、2つの代入文を使用せずに次のコードを書くだけです。

ICryptoTransform encryptor = aes.CreateEncryptor(Key, IV); 
関連する問題