TripleDES クラス
すべての TripleDES の実装の派生元となる TDES (Triple Data Encryption Standard) アルゴリズムの基本クラスを表します。
この型のすべてのメンバの一覧については、TripleDES メンバ を参照してください。
System.Object
System.Security.Cryptography.SymmetricAlgorithm
System.Security.Cryptography.TripleDES
System.Security.Cryptography.TripleDESCryptoServiceProvider
MustInherit Public Class TripleDES
Inherits SymmetricAlgorithm
[C#]
public abstract class TripleDES : SymmetricAlgorithm
[C++]
public __gc __abstract class TripleDES : public SymmetricAlgorithm
[JScript]
public abstract class TripleDES extends SymmetricAlgorithm
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
TripleDES では、3 つの連続した DES アルゴリズムの反復を使用します。2 つまたは 3 つの 56 ビット キーを使用できます。
使用例
[Visual Basic, C#, C++] 指定した Key と初期化ベクタ (IV) で TripleDESCryptoServiceProvider を使用して、 inName
で指定したファイルを暗号化し、暗号化の結果を outName
で指定したファイルに出力するメソッドの例を次に示します。
Private Shared Sub EncryptData(inName As String, outName As String, _
tdesKey() As Byte, tdesIV() 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 'This is the total length of the input file.
Dim len As Integer 'This is the number of bytes to be written at a time.
Dim tdes As New TripleDESCryptoServiceProvider()
Dim encStream As New CryptoStream(fout, _
tdes.CreateEncryptor(tdesKey, tdesIV), 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)
End While
encStream.Close()
End Sub
[C#]
private static void EncryptData(String inName, String outName, byte[] tdesKey, byte[] tdesIV)
{
//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.
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
CryptoStream encStream = new CryptoStream(fout, tdes.CreateEncryptor(tdesKey, tdesIV), 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();
}
[C++]
void EncryptData(String* inName, String* outName, Byte tdesKey[], Byte tdesIV[])
{
//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.
TripleDESCryptoServiceProvider* tdes = new TripleDESCryptoServiceProvider();
CryptoStream* encStream = new CryptoStream(fout, tdes->CreateEncryptor(tdesKey, tdesIV), 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();
}
[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 内)