Rfc2898DeriveBytes.IterationCount プロパティ
アセンブリ: mscorlib (mscorlib.dll 内)

Dim instance As Rfc2898DeriveBytes Dim value As Integer value = instance.IterationCount instance.IterationCount = value
/** @property */ public int get_IterationCount () /** @property */ public void set_IterationCount (int value)
演算の反復処理回数。



Rfc2898DeriveBytes クラスを使用して、TripleDES クラスのまったく同じ 2 つのキーを作成するコード例を次に示します。次に、このキーを使用して、一部のデータを暗号化および復号化します。
//The default iteration count is 1000 so the two methods use the same iteration count. int myIterations = 1000; try { Rfc2898DeriveBytes k1 = new Rfc2898DeriveBytes(pwd1, salt1 ,myIterations); Rfc2898DeriveBytes k2 = new Rfc2898DeriveBytes(pwd1, salt1); // Encrypt the data. TripleDES encAlg = TripleDES.Create(); encAlg.Key = k1.GetBytes(16); MemoryStream encryptionStream = new MemoryStream(); CryptoStream encrypt = new CryptoStream(encryptionStream, encAlg.CreateEncryptor(),CryptoStreamMode.Write); byte[] utfD1 = new System.Text.UTF8Encoding(false).GetBytes(data1); encrypt.Write(utfD1, 0, utfD1.Length); encrypt.FlushFinalBlock(); encrypt.Close(); byte[] edata1 = encryptionStream.ToArray(); k1.Reset(); // Try to decrypt, thus showing it can be round-tripped. TripleDES decAlg = TripleDES.Create(); decAlg.Key = k2.GetBytes(16); decAlg.IV = encAlg.IV; MemoryStream decryptionStreamBacking = new MemoryStream(); CryptoStream decrypt = new CryptoStream(decryptionStreamBacking,decAlg.CreateDecryptor(), CryptoStreamMode.Write); decrypt.Write(edata1, 0, edata1.Length); decrypt.Flush(); decrypt.Close(); k2.Reset(); string data2 = new UTF8Encoding(false).GetString(decryptionStreamBacking.ToArray()); if (!data1.Equals(data2)) { Console.WriteLine("Error: The two values are not equal."); } else { Console.WriteLine("The two values are equal."); Console.WriteLine("k1 iterations: {0}",k1.IterationCount); Console.WriteLine("k2 iterations: {0}",k2.IterationCount); }
//The default iteration count is 1000 so the two methods use the same iteration count. int myIterations = 1000; try { Rfc2898DeriveBytes ^ k1 = gcnew Rfc2898DeriveBytes( pwd1,salt1,myIterations ); Rfc2898DeriveBytes ^ k2 = gcnew Rfc2898DeriveBytes( pwd1,salt1 ); // Encrypt the data. TripleDES^ encAlg = TripleDES::Create(); encAlg->Key = k1->GetBytes( 16 ); MemoryStream^ encryptionStream = gcnew MemoryStream; CryptoStream^ encrypt = gcnew CryptoStream( encryptionStream,encAlg->CreateEncryptor(),CryptoStreamMode::Write ); array<Byte>^utfD1 = (gcnew System::Text::UTF8Encoding( false ))->GetBytes( data1 ); encrypt->Write( utfD1, 0, utfD1->Length ); encrypt->FlushFinalBlock(); encrypt->Close(); array<Byte>^edata1 = encryptionStream->ToArray(); k1->Reset(); // Try to decrypt, thus showing it can be round-tripped. TripleDES^ decAlg = TripleDES::Create(); decAlg->Key = k2->GetBytes( 16 ); decAlg->IV = encAlg->IV; MemoryStream^ decryptionStreamBacking = gcnew MemoryStream; CryptoStream^ decrypt = gcnew CryptoStream( decryptionStreamBacking,decAlg->CreateDecryptor(),CryptoStreamMode::Write ); decrypt->Write( edata1, 0, edata1->Length ); decrypt->Flush(); decrypt->Close(); k2->Reset(); String^ data2 = (gcnew UTF8Encoding( false ))->GetString( decryptionStreamBacking->ToArray() ); if ( !data1->Equals( data2 ) ) { Console::WriteLine( "Error: The two values are not equal." ); } else { Console::WriteLine( "The two values are equal." ); Console::WriteLine( "k1 iterations: {0}", k1->IterationCount ); Console::WriteLine( "k2 iterations: {0}", k2->IterationCount ); }
//The default iteration count is 1000 so the two methods use the //same iteration count. int myIterations = 1000; try { Rfc2898DeriveBytes k1 = new Rfc2898DeriveBytes(pwd1, salt1 , myIterations); Rfc2898DeriveBytes k2 = new Rfc2898DeriveBytes(pwd1, salt1); // Encrypt the data. TripleDES encAlg = TripleDES.Create(); encAlg.set_Key(k1.GetBytes(16)); MemoryStream encryptionStream = new MemoryStream(); CryptoStream encrypt = new CryptoStream(encryptionStream, encAlg.CreateEncryptor(), CryptoStreamMode.Write); ubyte utfD1[] = (new System.Text.UTF8Encoding(false)). GetBytes(data1); encrypt.Write(utfD1, 0, utfD1.get_Length()); encrypt.FlushFinalBlock(); encrypt.Close(); ubyte eData1[] = encryptionStream.ToArray(); k1.Reset(); // Try to decrypt, thus showing it can be round-tripped. TripleDES decAlg = TripleDES.Create(); decAlg.set_Key(k2.GetBytes(16)); decAlg.set_IV(encAlg.get_IV()); MemoryStream decryptionStreamBacking = new MemoryStream(); CryptoStream decrypt = new CryptoStream(decryptionStreamBacking, decAlg.CreateDecryptor(), CryptoStreamMode.Write); decrypt.Write(eData1, 0, eData1.get_Length()); decrypt.Flush(); decrypt.Close(); k2.Reset(); String data2 = (new UTF8Encoding(false)). GetString(decryptionStreamBacking.ToArray()); if (!(data1.Equals(data2))) { Console.WriteLine("Error: The two values are not equal."); } else { Console.WriteLine("The two values are equal."); Console.WriteLine("k1 iterations: {0}", (System.Int32)k1. get_IterationCount()); Console.WriteLine("k2 iterations: {0}", (System.Int32)k2. get_IterationCount()); }

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からRfc2898DeriveBytes.IterationCount プロパティを検索する場合は、下記のリンクをクリックしてください。

- Rfc2898DeriveBytes.IterationCount プロパティのページへのリンク