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...
- comment spécifier KeySize? si j'utilise
des.KeySize=
128
ou192
ou256
donne
clé Spécifiée n'est pas valide, la taille de cet algorithme
- 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é?
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