다음을 통해 공유


DES 클래스

모든 DES 구현이 파생되어야 하는 DES(데이터 암호화 표준) 알고리즘에 대한 기본 클래스를 나타냅니다.

네임스페이스: System.Security.Cryptography
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
<ComVisibleAttribute(True)> _
Public MustInherit Class DES
    Inherits SymmetricAlgorithm
‘사용 방법
Dim instance As DES
[ComVisibleAttribute(true)] 
public abstract class DES : SymmetricAlgorithm
[ComVisibleAttribute(true)] 
public ref class DES abstract : public SymmetricAlgorithm
/** @attribute ComVisibleAttribute(true) */ 
public abstract class DES extends SymmetricAlgorithm
ComVisibleAttribute(true) 
public abstract class DES extends SymmetricAlgorithm

설명

이 알고리즘은 길이가 64비트인 키를 지원합니다.

예제

다음 코드 예제의 메서드는 DESCryptoServiceProvider(DES 구현)와 지정된 키(Key) 및 초기화 벡터(IV)를 함께 사용하여 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
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();                   
 }
void EncryptData( String^ inName, String^ outName, array<Byte>^desKey, array<Byte>^desIV )
{
   
   //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.

   DES^ des = gcnew DESCryptoServiceProvider;
   CryptoStream^ encStream = gcnew 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();
}
private static void EncryptData(String inName, 
    String outName, ubyte desKey[], ubyte 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.        
    ubyte bin[] = new ubyte[100];  // This is intermediate 
                                   // storage for the encryption.
    long rdlen = 0; // This is the total 
                    // number of bytes written.
    long totlen = fin.get_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", 
            System.Convert.ToString(rdlen));
    }

    encStream.Close();
    fout.Close();
    fin.Close();
} //EncryptData

암호 해독도 같은 방식으로 처리되지만 CreateEncryptor 대신 CreateDecryptor를 사용합니다. 파일을 암호화할 때 사용되는 키(Key) 및 초기화 벡터(IV)는 파일을 해독할 때 사용된 것과 동일해야 합니다.

상속 계층 구조

System.Object
   System.Security.Cryptography.SymmetricAlgorithm
    System.Security.Cryptography.DES
       System.Security.Cryptography.DESCryptoServiceProvider

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0에서 지원

참고 항목

참조

DES 멤버
System.Security.Cryptography 네임스페이스

기타 리소스

암호화 서비스