2009-08-11 3 views
4

Ich verwende diesen Code, um eine 8 Bytes PlainText mit einem 8-Byte-Schlüssel zu verschlüsseln, aber das Ergebnis ist immer ein 16-Byte-Array.DES-Verschlüsselung von 8 Bytes Klartext ergibt 16-Byte-Array

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; 
} 

Die ersten 8 Bytes des ouptut ist, was ich erwarten würde, aber der Rest Ich weiß nicht, was es ist .. es ist etwas falsch mit diesem Code?

Antwort

8

Der Eingang wird zur nächsten Blockgröße unter Verwendung PKCS padding aufgefüllt. Die Eingabe von 7 Bytes wird auf 8 aufgefüllt. 8-15 bis 16. 16-23 bis 24 und so weiter und so fort.

+3

Toll !, Hinzufügen mDES.Padding = PaddingMode.None funktioniert .. Danke – eledu81

+1

Das ist in Ordnung, solange Sie die Größe des Klartextes kennen. Andernfalls benötigen Sie eine bestimmte Auffüllmethode, um die Größe des Klartextes zu bestimmen (für andere, die sich dieses Frage-/Antwort-Formular ansehen). –