DES算法加密问题(紧急求教!) 程序根本不对,你这一步 CryptoStream cs = new CryptoStream(ms,des.CreateEncryptordes.Key,des.IV),CryptoStreamMode.Write);过后,我调试的时候根本没有内容。你要加密的内容在那里啊??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我改了一下你的代码,你测试以下。DES des = new DESCryptoServiceProvider(); string key="1977"; string iv="1809"; byte[] deskey=Encoding.Unicode.GetBytes(key); byte[] desIV=Encoding.Unicode.GetBytes(iv); byte[] plainBytes = new byte[100]; for (int i=0; i<plainBytes.Length; i++) plainBytes[i] = 215; //这里是初始化数组 MemoryStream ms = new MemoryStream(plainBytes); // 这里很关键,创建内存流,要代上你要加密的内容plainBytes CryptoStream cs = new CryptoStream(ms,des.CreateEncryptor(des.Key,des.IV),CryptoStreamMode.Write); cs.Write(plainBytes, 0, plainBytes.Length); // 输出加密后结果 enc_text.Text = Encoding.ASCII.GetString(plainBytes); 有这样几个问题:1. 你的plainBytes数组没有初始化,这是你要加密的原始内容。(key和iv只是算法初始化用的)。2. MemoryStream要指定初始容量: MemoryStream ms = new MemoryStream(plainBytes.Length);3. 加密的结果存在MemoryStream里,而不是plaiBytes里面。 byte[] result = ms.ToArray();2. 加密之后的Stream包含的是Bytes,不保证一定是可显示的ASCII字符,使用ASCII编码不正确。 可以使用BASE64编码: System.Convert.ToBase64String(result); qqchen79 [MS MVP] 算法:怎么剔除数据中的粗差 C#简单工厂模式的反射无法创建,详细情况见内容 C#+wince,发现Forms类里面没有message 面试时的考题 请教:怎么使textbox格式化接受输入IP地址? POS机打印的问题 求助如何将所截出的图片用画图工具打开。 我在上csdn的时候,怎样设计一个程序屏蔽绑定在csdn上面的这些广告 高手的就进来看看 ComboBox 数据绑定问题? C#中如何显示一个选择目录的对话框? 这是剑心(zjxing)写的一个“精确定时的类库”,下载地址。
string key="1977";
string iv="1809";
byte[] deskey=Encoding.Unicode.GetBytes(key);
byte[] desIV=Encoding.Unicode.GetBytes(iv);
byte[] plainBytes = new byte[100]; for (int i=0; i<plainBytes.Length; i++)
plainBytes[i] = 215; //这里是初始化数组
MemoryStream ms = new MemoryStream(plainBytes); // 这里很关键,创建内存流,要代上你要加密的内容plainBytes
CryptoStream cs = new CryptoStream(ms,des.CreateEncryptor(des.Key,des.IV),CryptoStreamMode.Write); cs.Write(plainBytes, 0, plainBytes.Length);
// 输出加密后结果
enc_text.Text = Encoding.ASCII.GetString(plainBytes);
1. 你的plainBytes数组没有初始化,这是你要加密的原始内容。(key和iv只是算法初始化用的)。
2. MemoryStream要指定初始容量:
MemoryStream ms = new MemoryStream(plainBytes.Length);
3. 加密的结果存在MemoryStream里,而不是plaiBytes里面。
byte[] result = ms.ToArray();
2. 加密之后的Stream包含的是Bytes,不保证一定是可显示的ASCII字符,使用ASCII编码不正确。
可以使用BASE64编码:
System.Convert.ToBase64String(result); qqchen79
[MS MVP]