SymmetricAlgorithm クラスとは? わかりやすく解説

SymmetricAlgorithm クラス

対称アルゴリズムすべての実装継承する必要がある抽象基本クラス表します

名前空間: System.Security.Cryptography
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<ComVisibleAttribute(True)> _
Public MustInherit Class
 SymmetricAlgorithm
    Implements IDisposable
Dim instance As SymmetricAlgorithm
[ComVisibleAttribute(true)] 
public abstract class SymmetricAlgorithm :
 IDisposable
[ComVisibleAttribute(true)] 
public ref class SymmetricAlgorithm abstract
 : IDisposable
/** @attribute ComVisibleAttribute(true) */ 
public abstract class SymmetricAlgorithm implements
 IDisposable
ComVisibleAttribute(true) 
public abstract class SymmetricAlgorithm implements
 IDisposable
解説解説

このクラスSymmetricAlgorithm クラスから派生しており、CBC (Cipher Block Chaining) と呼ばれるチェーン モード使用されます。このモードデータ暗号変換実行するには、キー (Key) と初期化ベクタ (IV) が必要になりますSymmetricAlgorithm クラスいずれか使用して暗号化されたデータ復号化するには、Key プロパティIV プロパティを、暗号化使用された値と同じ値に設定する必要があります対称アルゴリズム使用する場合には、送信者と受信者以外に共有キー知られないようにする必要があります

RijndaelManaged、DESCryptoServiceProvider、RC2CryptoServiceProvider、および TripleDESCryptoServiceProvider は、対称アルゴリズムの実装です。

セキュリティ観点から考えると、派生クラス使用する場合オブジェクト使用後ガベージ コレクション実行するだけでは不十分です。オブジェクトに対して明示的に Clear メソッド呼び出しオブジェクト内の重情報をすべて 0 にした後で解放する必要がありますガベージ コレクションでは、収集されたオブジェクトコンテンツをすべて 0 にするのではなく単純にメモリを再割り当て可能としてマークするだけです。したがってガベージ コレクション対象となったオブジェクトデータが、未割り当てメモリメモリ ヒープ内に残る場合あります暗号化オブジェクト場合、このデータキー データ平文ブロックなどの機密情報含まれている可能性あります

.NET Framework では、重要情報格納するすべての暗号化クラスClear メソッド実装されています。Clear メソッド呼び出すと、オブジェクト内の重情報がすべて 0 で上書きされた後、オブジェクト解放されます。これにより、オブジェクト安全にガベージ コレクション実行できますオブジェクトが 0 で上書きされて解放されたら、disposing パラメータTrue設定して Dispose メソッド呼び出しオブジェクト関連付けられているマネージ リソースとアンマネージ リソースをすべて破棄する必要があります

継承時の注意 SymmetricAlgorithm クラスから継承する場合、CreateDecryptor、CreateEncryptor、GenerateIV、GenerateKey の各メンバオーバーライドする必要があります

使用例使用例

指定した Key プロパティ初期化ベクタ (IV) で RijndaelManaged クラス使用してinName指定されファイル暗号化し、暗号化結果outName指定したファイル出力するコード例次に示します。このメソッド対すdesKey パラメータおよび desIV パラメータは、8 バイト配列です。このコード例実行するには、高度暗号化パックインストールされている必要があります

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
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();                   
 }
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,
    ubyte rijnKey[], ubyte 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.
    //Following is intermediate storage for the encryption.
    ubyte bin[] = new ubyte[100]; 
    //Following is the total number of bytes written.
    long rdlen = 0;
    //Following is the total length of the input file.
    long totlen = fin.get_Length(); 
    //Following is the number of bytes to be written at a time.
    int len; 

    //Create the default implementation, which is RijndaelManaged. 
        
    SymmetricAlgorithm rijn = SymmetricAlgorithm.Create(); 
    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", (System.Int64)rdlen);
    }
    encStream.Close();
    fout.Close();
    fin.Close();
} //EncryptData
継承階層継承階層
System.Object
  System.Security.Cryptography.SymmetricAlgorithm
     System.Security.Cryptography.DES
     System.Security.Cryptography.RC2
     System.Security.Cryptography.Rijndael
     System.Security.Cryptography.TripleDES
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「SymmetricAlgorithm クラス」の関連用語

SymmetricAlgorithm クラスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



SymmetricAlgorithm クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS