加密时的错误,这是什么意思? 你用DES算法,给出的key长度不够。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼上的,那是肯定不行的,因为DES只支持8个字节长度的Key。 我碰到过这个问题.你把那个KEY改成4位的就成了.不信可以试试,呵呵 把代码贴出来看看这是我的信箱[email protected] 你在调用CreateEncryptor方法的那句的前面,加上一句测试一下:Console.WriteLine(Key.Length);Console.WriteLine(Iv.Length);如果不是8就是这个错了。微软必须是8,否则报错。 Byte[] arrDESKey,arrDESIV,arrInput;System.IO.FileStream objFileStream;DESCryptoServiceProvider objDES;ICryptoTransform objEncryptor;CryptoStream objCryptoStream;string DESKey="ABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGH";string DESIV="ABCDABCD";arrDESKey = Convert2ByteArray(DESKey);arrDESIV = Convert2ByteArray(DESIV);arrInput = Convert2ByteArray("mytest");objDES = new DESCryptoServiceProvider();MessageBox.Show(objDES.IV.Length.ToString()); //为8MessageBox.Show(arrDESIV.Length.ToString()); //还是8objDES.Key = arrDESKey;objDES.IV = arrDESIV;// //出错了!....附:private byte[] Convert2ByteArray(string strInput){ char[] arrChar; arrChar = strInput.ToCharArray(); byte[] arrByte = new byte[arrChar.Length]; for(int i=0; i<arrByte.Length; i++) arrByte[i] = Convert.ToByte(arrChar[i]); return arrByte;} chenxy2002((HomeMan) ,我换成了4个字符的也还是不对,报一样的错误 :( string DESKey="ABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGH";string DESIV="ABCDABCD";你的代码中一个字符作为一个字节,这样的话,密钥只能有8个字符,但是你的有64个字符,也就是64个字节,也就是64 * 8 = 512位,但DES只能是64位,这个位是指二进制位。 请教代码。。 .net平台下用c#开发一软件 有问题请教!! 在wpf中给button设置背景图片,点击button会不停的闪烁. webeditor的错误问题 急等 c#调用本地excel的问题总是提示权限错 请教webbrowser控件如何同步更新代理设置 大家好,小弟想请教一个关于2窗体间的textbox的值的传递问题,谢谢 winform如何做一个菜单跟随光标的效果 旧问题!--如何判断所有的mdi子窗体都已经关闭?? C#和VBScript结合问题 关于dataSet中无数据的情况
这是我的信箱
[email protected]
Console.WriteLine(Key.Length);
Console.WriteLine(Iv.Length);
如果不是8就是这个错了。微软必须是8,否则报错。
System.IO.FileStream objFileStream;
DESCryptoServiceProvider objDES;
ICryptoTransform objEncryptor;
CryptoStream objCryptoStream;string DESKey="ABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGH";
string DESIV="ABCDABCD";arrDESKey = Convert2ByteArray(DESKey);
arrDESIV = Convert2ByteArray(DESIV);
arrInput = Convert2ByteArray("mytest");
objDES = new DESCryptoServiceProvider();MessageBox.Show(objDES.IV.Length.ToString()); //为8
MessageBox.Show(arrDESIV.Length.ToString()); //还是8objDES.Key = arrDESKey;
objDES.IV = arrDESIV;// //出错了!....附:
private byte[] Convert2ByteArray(string strInput)
{
char[] arrChar; arrChar = strInput.ToCharArray();
byte[] arrByte = new byte[arrChar.Length];
for(int i=0; i<arrByte.Length; i++)
arrByte[i] = Convert.ToByte(arrChar[i]); return arrByte;
}
string DESIV="ABCDABCD";
你的代码中一个字符作为一个字节,这样的话,密钥只能有8个字符,但是你的有64个字符,也就是64个字节,也就是64 * 8 = 512位,但DES只能是64位,这个位是指二进制位。