3DES Taille de la clé C#.Net

le Code ci-dessous fonctionne très bien c#.NET

byte[] key = Encoding.ASCII.GetByte("012345678901234567890123"); //24characters        
byte[] plainText = Encoding.ASCII.GetBytes("lasaa"); 
TripleDES des = TripleDES.Create();
des.Key = key;
des.Mode = CipherMode.CBC;
ICryptoTransform ic = des.CreateEncryptor();
byte[] enc = ic.TransformFinalBlock(plainText, 0, plainText.Length);
MessageBox.Show(UTF8Encoding.UTF8.GetString(enc));

mes questions concernant ci-dessus sont...

  1. comment spécifier KeySize? si j'utilise des.KeySize=128 ou 192 ou 256 donne

clé Spécifiée n'est pas valide, la taille de cet algorithme

  1. si je change la longueur des caractères dans la clé en ajoutant plus (ex:40 caractères). Il donne l'erreur

Spécifié key n'est pas une taille valide pour cet algorithme

je veux savoir pourquoi c'est arrivé?

19
demandé sur Liam 2011-04-12 12:11:47

4 réponses

une clé 3DES a une longueur de 128 ou 192 bits. Notez que, interne, l'algorithme n'utilisera que 112 (respectivement 168) bits sur ces 128 (respectivement 192) bits; cependant, la clé elle-même, telle qu'encodée en octets, stockée et échangée, doit avoir une longueur de 16 ou 24 octets. Essayer de définir une clé qui n'a pas l'une de ces deux longueurs déclenche une erreur, que vous observez lorsque vous essayez d'utiliser une clé de 40 octets.

Vous ne devriez pas essayer de régler la "taille de la clé": vous avez déjà décider que lorsque vous définissez la clé. Lorsque vous définissez TripleDES.Key propriété, le TripleDES la classe voit que vous lui donnez une clé de 24 octets, et ainsi se positionnera le