2009-08-11 2 views
4

이 코드를 사용하여 8 바이트 키를 사용하여 8 바이트 PlainText를 암호화하지만 결과는 항상 16 바이트 배열입니다.8 바이트 일반 텍스트의 DES 암호화 결과는 16 바이트 배열입니다.

public static byte[] Encrypt(byte[] PlainText, byte[] key) 
{ 
    MemoryStream ms = new MemoryStream(); 
    DESCryptoServiceProvider mDES = new DESCryptoServiceProvider(); 
    mDES.Mode = CipherMode.ECB; 
    mDES.Key = key; 

    CryptoStream encStream = new CryptoStream(ms, mDES.CreateEncryptor(), CryptoStreamMode.Write); 
    BinaryWriter bw = new BinaryWriter(encStream); 

    bw.Write(PlainText); 
    bw.Close(); 
    encStream.Close(); 

    byte[] buffer = ms.ToArray(); 
    ms.Close(); 

    return buffer; 
} 

ouptut의 처음 8 바이트는 예상 한 것이지만 나머지는이 코드와 관련이 없습니다.

답변

8

을 사용하여 블록 크기가 인 다음으로 입력이 채워집니다. 7 바이트 입력은 8로 패딩됩니다. 8-15-15. 16-23-24 등.

+3

위대한!, 추가 mDES.Padding = PaddingMode.None 작동합니다. 고마워요. – eledu81

+1

일반 텍스트의 크기를 아는 한 괜찮습니다. 그렇지 않으면 일반 텍스트의 크기를 결정하기 위해 특정 패딩 메서드가 필요합니다 (이 Q/A를 보는 다른 사람들을 위해). –

관련 문제