加密时的错误,这是什么意思? 你用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位,这个位是指二进制位。 【推荐】C# 实现 100G数据文件查找100个最大值 【2010支付宝西安最新笔试题】 web 监控远程桌面,如何将WINFORM 转换成WEB 版的 根据TEXTBOX查询 C#如何调用C#写的DLL? 未将对象引用设置到对象的实例 如何给所有控件添加自定义的属性? 我做的windows服务为什么会在任务管理器中关闭? 如何显示缩略图 求winfrom下,html编辑器控件! 哪裡有數據庫編程的例子下載。C# 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位,这个位是指二进制位。