DES クラス
すべての DES の実装の派生元となる DES (Data Encryption Standard) アルゴリズムの基本クラスを表します。
この型のすべてのメンバの一覧については、DES メンバ を参照してください。
System.Object
System.Security.Cryptography.SymmetricAlgorithm
System.Security.Cryptography.DES
System.Security.Cryptography.DESCryptoServiceProvider
MustInherit Public Class DES
Inherits SymmetricAlgorithm
[C#]
public abstract class DES : SymmetricAlgorithm
[C++]
public __gc __abstract class DES : public SymmetricAlgorithm
[JScript]
public abstract class DES extends SymmetricAlgorithm
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
使用例
[Visual Basic, C#, C++] 指定した Key および初期化ベクタ (IV) を DESCryptoServiceProvider (DES の実装) で使用して、 inName
で指定するファイルを暗号化し、暗号化の結果を outName
で指定するファイルに出力するメソッドの例を次に示します。
Private Shared Sub EncryptData(inName As String, outName As String, _
desKey() As Byte, desIV() 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(4096) 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.
Dim des As New DESCryptoServiceProvider()
Dim encStream As New CryptoStream(fout, _
des.CreateEncryptor(desKey, desIV), 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, 4096)
encStream.Write(bin, 0, len)
rdlen = Convert.ToInt32(rdlen + len / des.BlockSize * des.BlockSize)
Console.WriteLine("Processed {0} bytes, {1} bytes total", len, _
rdlen)
End While
encStream.Close()
End Sub
[C#]
private static void EncryptData(String inName, String outName, byte[] desKey, byte[] desIV)
{
//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.
DES des = new DESCryptoServiceProvider();
CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(desKey, desIV), 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();
}
[C++]
void EncryptData(String* inName, String* outName, Byte desKey[], Byte desIV[])
{
//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 = (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.
DES* des = new DESCryptoServiceProvider();
CryptoStream* encStream = new CryptoStream(fout, des->CreateEncryptor(desKey, desIV), CryptoStreamMode::Write);
Console::WriteLine(S"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(S"{0} bytes processed", __box(rdlen));
}
encStream->Close();
fout->Close();
fin->Close();
}
[Visual Basic, C#, C++] 復号化も同じ方法で処理できます。ただし、その場合は CreateEncryptor の代わりに CreateDecryptor を使用します。復号化では、ファイルを暗号化するために使用したものと同じ Key と IV を使用する必要があります。
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Security.Cryptography
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: Mscorlib (Mscorlib.dll 内)