2009-08-11 7 views
4

J'utilise ce code pour crypter un 8 octets PlainText avec une clé de 8 octets, mais le résultat est toujours un tableau de 16 octets.Cryptage DES de 8 octets en texte brut résultats dans le tableau de 16 octets

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

Les 8 premiers octets du ouptut est ce que je pense, mais le reste, je ne sais pas ce qu'il est .. est-il quelque chose de mal avec ce code?

Répondre

8

L'entrée sera complétée au suivant taille du bloc en utilisant PKCS padding. L'entrée de 7 octets sera rembourrée à 8. 8-15 à 16. 16-23 à 24 et ainsi de suite.

+3

Grand !, ajouter mDES.Padding = PaddingMode.None fonctionne .. Merci – eledu81

+1

C'est bien aussi longtemps que vous connaissez la taille du texte brut. Sinon, vous aurez besoin d'une méthode de remplissage spécifique pour déterminer la taille du texte brut (pour les autres personnes qui regardent cette question). –

Questions connexes