Las*_*tha 19 c# encryption 3des
下面的代码在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));
Run Code Online (Sandbox Code Playgroud)
我对上述问题是......
des.KeySize= 128或192或256它给指定的密钥不是此算法的有效大小
指定的密钥不是此算法的有效大小
我想知道为什么会这样?
Tho*_*nin 26
3DES密钥的长度为128或192位.注意,在内部,算法将仅使用128个(分别为192个)位中的112个(分别为168个)位; 但是,密钥本身,编码为字节,存储和交换,必须具有16或24字节的长度.尝试设置一个没有这两个长度之一的密钥会触发错误,当您尝试使用40字节密钥时会发现该错误.
您不应该尝试设置"密钥大小":您已经决定在设置密钥时.设置TripleDES.Key属性时,TripleDES类会看到您为其提供了一个24字节的密钥,因此将自己的KeySize属性设置为192.
(3DES加密的输出是二进制的,而不是字符串的UTF-8编码.很可能你的决赛UTF8Encoding.UTF8.GetString(enc)会抗议.)