SymmetricAlgorithm SymmetricAlgorithm SymmetricAlgorithm SymmetricAlgorithm Class

定義

対称アルゴリズムのすべての実装が継承する必要がある、抽象基本クラスを表します。Represents the abstract base class from which all implementations of symmetric algorithms must inherit.

public ref class SymmetricAlgorithm abstract : IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class SymmetricAlgorithm : IDisposable
type SymmetricAlgorithm = class
    interface IDisposable
Public MustInherit Class SymmetricAlgorithm
Implements IDisposable
継承
SymmetricAlgorithmSymmetricAlgorithmSymmetricAlgorithmSymmetricAlgorithm
派生
属性
実装

次のコード例では、 RijndaelManaged 、指定したクラスKeyプロパティおよび初期化ベクター (IV) で指定されたファイルの暗号化にinName、によって指定されたファイルを暗号化された結果を出力outName.The following code example uses the RijndaelManaged class with the specified Key property and initialization vector (IV) to encrypt a file specified by inName, and outputs the encrypted result to the file specified by outName. desKeydesIVメソッドのパラメーターは 8 バイトの配列。The desKey and desIV parameters to the method are 8-byte arrays. この例を実行する高度暗号化パックが必要です。You must have the high encryption pack installed to run this example.

void EncryptData( String^ inName, String^ outName, array<Byte>^rijnKey, array<Byte>^rijnIV )
{
   
   //Create the file streams to handle the input and output files.
   FileStream^ fin = gcnew FileStream( inName,FileMode::Open,FileAccess::Read );
   FileStream^ fout = gcnew FileStream( outName,FileMode::OpenOrCreate,FileAccess::Write );
   fout->SetLength( 0 );
   
   //Create variables to help with read and write.
   array<Byte>^bin = gcnew array<Byte>(100);
   long rdlen = 0; //This is the total number of bytes written.

   long totlen = (long)fin->Length; //This is the total length of the input file.

   int len; //This is the number of bytes to be written at a time.

   SymmetricAlgorithm^ rijn = SymmetricAlgorithm::Create(); //Creates the default implementation, which is RijndaelManaged.         

   CryptoStream^ encStream = gcnew CryptoStream( fout,rijn->CreateEncryptor( rijnKey, rijnIV ),CryptoStreamMode::Write );
   Console::WriteLine( "Encrypting..." );
   
   //Read from the input file, then encrypt and write to the output file.
   while ( rdlen < totlen )
   {
      len = fin->Read( bin, 0, 100 );
      encStream->Write( bin, 0, len );
      rdlen = rdlen + len;
      Console::WriteLine( "{0} bytes processed", rdlen );
   }

   encStream->Close();
   fout->Close();
   fin->Close();
}

private static void EncryptData(String inName, String outName, byte[] rijnKey, byte[] rijnIV)
 {    
     //Create the file streams to handle the input and output files.
     FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
     FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
     fout.SetLength(0);
       
     //Create variables to help with read and write.
     byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
     long rdlen = 0;              //This is the total number of bytes written.
     long totlen = fin.Length;    //This is the total length of the input file.
     int len;                     //This is the number of bytes to be written at a time.
 
     SymmetricAlgorithm rijn = SymmetricAlgorithm.Create(); //Creates the default implementation, which is RijndaelManaged.         
     CryptoStream encStream = new CryptoStream(fout, rijn.CreateEncryptor(rijnKey, rijnIV), CryptoStreamMode.Write);
                
     Console.WriteLine("Encrypting...");
 
     //Read from the input file, then encrypt and write to the output file.
     while(rdlen < totlen)
     {
         len = fin.Read(bin, 0, 100);
         encStream.Write(bin, 0, len);
         rdlen = rdlen + len;
         Console.WriteLine("{0} bytes processed", rdlen);
     }
 
     encStream.Close();  
     fout.Close();
     fin.Close();                   
 }
   Private Shared Sub EncryptData(inName As String, outName As String, _
   rijnKey() As Byte, rijnIV() As Byte)
   
       'Create the file streams to handle the input and output files.
       Dim fin As New FileStream(inName, FileMode.Open, FileAccess.Read)
       Dim fout As New FileStream(outName, FileMode.OpenOrCreate, _
          FileAccess.Write)
       fout.SetLength(0)
       
       'Create variables to help with read and write.
       Dim bin(100) As Byte 'This is intermediate storage for the encryption.
       Dim rdlen As Long = 0 'This is the total number of bytes written.
       Dim totlen As Long = fin.Length 'Total length of the input file.
       Dim len As Integer 'This is the number of bytes to be written at a time.
       'Creates the default implementation, which is RijndaelManaged.
       Dim rijn As SymmetricAlgorithm = SymmetricAlgorithm.Create()
       Dim encStream As New CryptoStream(fout, _
          rijn.CreateEncryptor(rijnKey, rijnIV), CryptoStreamMode.Write)
       
       Console.WriteLine("Encrypting...")
       
       'Read from the input file, then encrypt and write to the output file.
       While rdlen < totlen
           len = fin.Read(bin, 0, 100)
           encStream.Write(bin, 0, len)
           rdlen = Convert.ToInt32(rdlen + len)
           Console.WriteLine("{0} bytes processed", rdlen)
       End While
       
       encStream.Close()
fout.Close()
fin.Close()
   End Sub

注釈

派生するクラス、SymmetricAlgorithmクラスは、暗号化ブロック チェーン (CBC) と呼ばれるチェーン モードを使用するには、キーが必要です (Key) と初期化ベクトル (IV) データに対して暗号変換を実行します。The classes that derive from the SymmetricAlgorithm class use a chaining mode called cipher block chaining (CBC), which requires a key (Key) and an initialization vector (IV) to perform cryptographic transformations on data. いずれかを使用して暗号化されたデータを復号化する、SymmetricAlgorithm設定する必要があります、クラス、KeyプロパティとIVの暗号化に使用された値と一致するプロパティ。To decrypt data that was encrypted using one of the SymmetricAlgorithm classes, you must set the Key property and the IV property to the same values that were used for encryption. 対称アルゴリズムを使用するためには、送信側と受信側にのみで、秘密キーを知られないようにする必要があります。For a symmetric algorithm to be useful, the secret key must be known only to the sender and the receiver.

RijndaelManagedDESCryptoServiceProviderRC2CryptoServiceProvider、およびTripleDESCryptoServiceProviderは対称アルゴリズムの実装です。RijndaelManaged, DESCryptoServiceProvider, RC2CryptoServiceProvider, and TripleDESCryptoServiceProvider are implementations of symmetric algorithms.

クラスの派生を使用して、あるオブジェクトの使用が完了した後、ガベージ コレクションを実行するだけでは、セキュリティの観点から不足してに注意してください。Note that when using derived classes, it is not enough, from a security perspective, to simply force a garbage collection after you have finished using the object. 明示的に呼び出す必要があります、Clearがリリースされる前に、オブジェクト内で機密データをゼロにするオブジェクトのメソッド。You must explicitly call the Clear method on the object to zero out any sensitive data within the object before it is released. ガベージ コレクションが収集されたオブジェクトの内容をゼロにはありませんが、再割り当て可能なものとしてメモリをマークするだけに注意してください。Note that garbage collection does not zero out the contents of collected objects but simply marks the memory as available for reallocation. したがってガベージ コレクション オブジェクト内のデータがありますメモリ ヒープに存在する未割り当てメモリの。Thus the data contained within a garbage collected object may still be present in the memory heap in unallocated memory. このデータは暗号化オブジェクトの場合、キー データやプレーン テキストのブロックなどの機密情報を含める可能性があります。In the case of cryptographic objects, this data could contain sensitive information such as key data or a block of plain text.

機密データの実装を保持する .NET Framework のすべての暗号化クラスをClearメソッド。All cryptographic classes in the .NET Framework that hold sensitive data implement a Clear method. が呼び出されると、Clearメソッドは 0 で、オブジェクト内のすべての機密データを上書きし、に安全にガベージ コレクトできるように、オブジェクトを解放します。When called, the Clear method overwrites all sensitive data within the object with zeros and then releases the object so that it can be safely garbage collected. オブジェクトを 0 に設定され、解放を呼び出す必要がありますし、Disposeメソッドをdisposingパラメーターに設定True管理すべて破棄され、アンマネージ オブジェクトに関連付けられているリソース。When the object has been zeroed and released, you should then call the Dispose method with the disposing parameter set to True to dispose of all managed and unmanaged resources associated with the object.

注意 (継承者)

継承する場合、SymmetricAlgorithmクラスでは、次のメンバーをオーバーライドする必要があります: CreateDecryptor(Byte[], Byte[])CreateEncryptor(Byte[], Byte[])GenerateIV()、およびGenerateKey()します。When you inherit from the SymmetricAlgorithm class, you must override the following members: CreateDecryptor(Byte[], Byte[]), CreateEncryptor(Byte[], Byte[]), GenerateIV(), and GenerateKey().

コンストラクター

SymmetricAlgorithm() SymmetricAlgorithm() SymmetricAlgorithm() SymmetricAlgorithm()

SymmetricAlgorithm クラスの新しいインスタンスを初期化します。Initializes a new instance of the SymmetricAlgorithm class.

フィールド

BlockSizeValue BlockSizeValue BlockSizeValue BlockSizeValue

暗号操作のブロック サイズをビット単位で表します。Represents the block size, in bits, of the cryptographic operation.

FeedbackSizeValue FeedbackSizeValue FeedbackSizeValue FeedbackSizeValue

暗号操作のフィードバック サイズをビット単位で表します。Represents the feedback size, in bits, of the cryptographic operation.

IVValue IVValue IVValue IVValue

対称アルゴリズムで使用する初期化ベクター (IV) を表します。Represents the initialization vector (IV) for the symmetric algorithm.

KeySizeValue KeySizeValue KeySizeValue KeySizeValue

対称アルゴリズムで使用する共有キーのサイズをビット単位で表します。Represents the size, in bits, of the secret key used by the symmetric algorithm.

KeyValue KeyValue KeyValue KeyValue

対称アルゴリズムの共有キーを表します。Represents the secret key for the symmetric algorithm.

LegalBlockSizesValue LegalBlockSizesValue LegalBlockSizesValue LegalBlockSizesValue

対称アルゴリズムでサポートされているブロック サイズをビット単位で指定します。Specifies the block sizes, in bits, that are supported by the symmetric algorithm.

LegalKeySizesValue LegalKeySizesValue LegalKeySizesValue LegalKeySizesValue

対称アルゴリズムでサポートされているキー サイズをビット単位で指定します。Specifies the key sizes, in bits, that are supported by the symmetric algorithm.

ModeValue ModeValue ModeValue ModeValue

対称アルゴリズムで使用する暗号モードを表します。Represents the cipher mode used in the symmetric algorithm.

PaddingValue PaddingValue PaddingValue PaddingValue

対称アルゴリズムで使用する埋め込みモードを表します。Represents the padding mode used in the symmetric algorithm.

プロパティ

BlockSize BlockSize BlockSize BlockSize

暗号操作のブロック サイズをビット単位で取得または設定します。Gets or sets the block size, in bits, of the cryptographic operation.

FeedbackSize FeedbackSize FeedbackSize FeedbackSize

暗号操作のフィードバック サイズをビット単位で取得または設定します。Gets or sets the feedback size, in bits, of the cryptographic operation.

IV IV IV IV

対称アルゴリズムの初期化ベクター (IV) を取得または設定します。Gets or sets the initialization vector (IV) for the symmetric algorithm.

Key Key Key Key

対称アルゴリズムの共有キーを取得または設定します。Gets or sets the secret key for the symmetric algorithm.

KeySize KeySize KeySize KeySize

対称アルゴリズムで使用する共有キーのサイズをビット単位で取得または設定します。Gets or sets the size, in bits, of the secret key used by the symmetric algorithm.

LegalBlockSizes LegalBlockSizes LegalBlockSizes LegalBlockSizes

対称アルゴリズムでサポートされているブロック サイズをビット単位で取得します。Gets the block sizes, in bits, that are supported by the symmetric algorithm.

LegalKeySizes LegalKeySizes LegalKeySizes LegalKeySizes

対称アルゴリズムでサポートされているキー サイズをビット単位で取得します。Gets the key sizes, in bits, that are supported by the symmetric algorithm.

Mode Mode Mode Mode

対称アルゴリズムの操作モードを取得または設定します。Gets or sets the mode for operation of the symmetric algorithm.

Padding Padding Padding Padding

対称アルゴリズムで使用する埋め込みモードを取得または設定します。Gets or sets the padding mode used in the symmetric algorithm.

メソッド

Clear() Clear() Clear() Clear()

SymmetricAlgorithm クラスによって使用されているすべてのリソースを解放します。Releases all resources used by the SymmetricAlgorithm class.

Create() Create() Create() Create()

対称アルゴリズムを実行するために使用する既定の暗号オブジェクトを作成します。Creates a default cryptographic object used to perform the symmetric algorithm.

Create(String) Create(String) Create(String) Create(String)

対称アルゴリズムを実行するために使用する指定された暗号オブジェクトを作成します。Creates the specified cryptographic object used to perform the symmetric algorithm.

CreateDecryptor() CreateDecryptor() CreateDecryptor() CreateDecryptor()

現在の Key プロパティおよび初期化ベクター (IV) を使用して、対称復号化オブジェクトを作成します。Creates a symmetric decryptor object with the current Key property and initialization vector (IV).

CreateDecryptor(Byte[], Byte[]) CreateDecryptor(Byte[], Byte[]) CreateDecryptor(Byte[], Byte[]) CreateDecryptor(Byte[], Byte[])

派生クラスでオーバーライドされると、指定した Key プロパティおよび初期化ベクター (IV) を使用して、対称復号化オブジェクトを作成します。When overridden in a derived class, creates a symmetric decryptor object with the specified Key property and initialization vector (IV).

CreateEncryptor() CreateEncryptor() CreateEncryptor() CreateEncryptor()

現在の Key プロパティおよび初期化ベクター (IV) を使用して、対称暗号化オブジェクトを作成します。Creates a symmetric encryptor object with the current Key property and initialization vector (IV).

CreateEncryptor(Byte[], Byte[]) CreateEncryptor(Byte[], Byte[]) CreateEncryptor(Byte[], Byte[]) CreateEncryptor(Byte[], Byte[])

派生クラスでオーバーライドされると、指定した Key プロパティおよび初期化ベクター (IV) を使用して、対称暗号化オブジェクトを作成します。When overridden in a derived class, creates a symmetric encryptor object with the specified Key property and initialization vector (IV).

Dispose() Dispose() Dispose() Dispose()

SymmetricAlgorithm クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。Releases all resources used by the current instance of the SymmetricAlgorithm class.

Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

SymmetricAlgorithm によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。Releases the unmanaged resources used by the SymmetricAlgorithm and optionally releases the managed resources.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
Finalize() Finalize() Finalize() Finalize()

このメンバーは Finalize() をオーバーライドし、より詳細なドキュメントがそのトピックで使用できるようになる場合があります。This member overrides Finalize(), and more complete documentation might be available in that topic.

Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.

GenerateIV() GenerateIV() GenerateIV() GenerateIV()

派生クラスでオーバーライドされると、アルゴリズムで使用するランダムな初期化ベクター (IV) を生成します。When overridden in a derived class, generates a random initialization vector (IV) to use for the algorithm.

GenerateKey() GenerateKey() GenerateKey() GenerateKey()

派生クラスでオーバーライドされると、アルゴリズムで使用するランダム キー (Key) を生成します。When overridden in a derived class, generates a random key (Key) to use for the algorithm.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)
ValidKeySize(Int32) ValidKeySize(Int32) ValidKeySize(Int32) ValidKeySize(Int32)

指定されたキー サイズが、現在のアルゴリズムに対して有効かどうかを判断します。Determines whether the specified key size is valid for the current algorithm.

明示的なインターフェイスの実装

IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose()

SymmetricAlgorithm によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。Releases the unmanaged resources used by the SymmetricAlgorithm and optionally releases the managed resources.

適用対象

こちらもご覧ください