3des加密为何编译出错?

叶子哟 2004-06-22 11:51:03
//利用3des加密源串,密钥为8位
//web应用
const string b64key = "abcdefgh";
public string EncryptData(string b64Key, string content)
{
byte[] tdesIV=new byte[1];
byte[] tdesKey=Convert.FromBase64String(b64Key);
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Mode=CipherMode.ECB;
tdes.Padding=PaddingMode.PKCS7;
ICryptoTransform temp=tdes.CreateEncryptor(tdesKey, tdesIV);
ToBase64Transform t64=new ToBase64Transform();
MemoryStream dstream=new MemoryStream();
CryptoStream encStream = new CryptoStream(dstream,t64 , CryptoStreamMode.Write);
CryptoStream enc2=new CryptoStream(dstream,temp,CryptoStreamMode.Write);
Console.WriteLine("Encrypting...");
char[] contentchar=content.ToCharArray();
byte[] contentbyte=new byte[contentchar.GetLength(0)];
for (int i=0;i<contentchar.GetLength(0);i++)
{
contentbyte[i]=(byte)contentchar[i];
}
enc2.Write(contentbyte, 0, contentchar.GetLength(0));
enc2.Close();
byte[] a3= dstream.ToArray();
string a4=Convert.ToBase64String(a3);
return a4;
}

出错提示:
指定键的大小对于此算法无效。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Security.Cryptography.CryptographicException: 指定键的大小对于此算法无效。

源错误:

行 66: tdes.Mode=CipherMode.ECB;
行 67: tdes.Padding=PaddingMode.PKCS7;
行 68: ICryptoTransform temp=tdes.CreateEncryptor(tdesKey, tdesIV);
行 69: ToBase64Transform t64=new ToBase64Transform();
行 70: MemoryStream dstream=new MemoryStream();


源文件: d:\inetpub\wwwroot\websip\bjsgip.aspx.cs 行: 68
...全文
179 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子哟 2004-06-22
  • 打赏
  • 举报
回复
非常感谢,先试试
jiezhi 2004-06-22
  • 打赏
  • 举报
回复
以上代码已经过测试
jiezhi 2004-06-22
  • 打赏
  • 举报
回复
private static byte[] Keys = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
/// <summary>
/// DES加密字符串
/// </summary>
/// <param name="encryptStr">待加密的字符串</param>
/// <param name="encryptKey">加密密钥,要求为8位</param>
/// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
public static string EncryptDES(string encryptStr,string encryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0,8));
byte[] rgbIV = Keys;
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptStr);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream,dCSP.CreateEncryptor(rgbKey,rgbIV),CryptoStreamMode.Write);
cStream.Write(inputByteArray,0,inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
catch
{
return encryptStr;
}
}

/// <summary>
/// DES解密字符串
/// </summary>
/// <param name="decryptStr">待解密的字符串</param>
/// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>
public static string DecryptDES(string decryptStr,string decryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
byte[] rgbIV = Keys;
byte[] inputByteArray = Convert.FromBase64String(decryptStr);
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream,DCSP.CreateDecryptor(rgbKey,rgbIV),CryptoStreamMode.Write);
cStream.Write(inputByteArray,0,inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return decryptStr;
}
}
易语言 精易编程助手3.3+精易模块v6.3.1 编程助手 一、网页分析 1、修复操作“网页树”命令导致测试界面按钮的错误显示; 2、优化网页树解析操作,修复部分失效功能; 二、编码转换 1、优化部分编码转换速度; 三、进程管理 1、优化进程功能加载时的策略; 其他 1、优化更新模块,有更新时提示发现新版本但不更新,更人性化提示更新; 2、解决部分系统权限原因导致无法正常取出文件MD5导致更新出错的问题; Edbug 一、网页调试 1、优化图片获取功能的文字提示; 2、优化请求是请求地址的智能判断,解决误输入导致访问异常的问题; 3、优化功能信息显示,更直观的显示功能; 4、优化Gzip自动解压功能; 5、新增在 网页_访问_对象 命令下附加超时参数的功能; 6、修复日记记录窗口跟随无法停止的BUG; 7、修复“网页_访问S”下选择字节集返回时的错误提示; 8、细微调整日记记录窗口大小与跟随; 二、JSON调试 1、优化JSON数据路径解析,支持更多路径解析; 2、优化代码生成部分细节; 3、修复没有数据的情况下复制路径报错的BUG; 其他 1、优化更新模块,有更新时提示发现新版本但不更新,更人性化提示更新; 2、解决部分系统权限原因导致无法正常取出文件MD5导致更新出错的问题; 精易模块 V6.3.1 一、新增 1、新增“剪辑板_取位图数据A”,“剪辑板_取位图数据B”,感谢【@铅笔刀 】反馈并建议 2、新增“文本_取出文本中汉字”,取出指定文本中的汉字; 3、新增“网页_JS格式化EX”原有的JS格式化命令的升级版; 4、新增“网页_Cookie合并更新ex”基于原有命令升级;感谢【@小小n 】反馈并提供源码 5、新增“字节集_字节集转文本ex”,“字节集_文本转字节集ex”提升转换效率;感谢【@贫民窟 】反馈并提供源码 二、修复 1、修复“文本_寻找出文本并删除”的返回数据,失败返回原文本;感谢【@ggp 】反馈 2、修复”文本_到大写“,”文本_到小写“,静态编译导致程序崩溃的问题‘感谢【@猕猴桃 】反馈 3、修复“系统_开启屏保”参数错误的BUG;感谢【@anata 】反馈 4、修复“IP_转至10进制”的描述错误;感谢【@mmmww3 】反馈 5、修复“自绘窗口_取信息”取出类型返回值的错误; 6、修复“系统_取网卡信息”取出MAC信息不全的BUG;感谢【@贫民窟 】反馈 7、修复“网页_取cookie”内部命令错误的返回值的BUG;感谢【@夜的静night 】反馈 8、修复“网页_cookie合并更新”去除空格过多的导致返回值错误的BUG;感谢【@黑白郎君 】反馈 三、优化 1、优化“窗口_自绘解析”关于解析命令的备注; 2、优化“AES_DES_算法”参数调用备注; 精易模块 V6.3 what's new: (20180401) 一、新增 1、新增“系统_清除托盘残留”,清除调试或其他问题导致的系统托盘残留的图标; 2、新增“进程_创建Ex”,更加便捷的创建进程;感谢【@379061296 】建议并提供 3、新增“文本_朗读Ex”,调用百度翻译接口,朗读更流畅;感谢【@sizaizuotian 】反馈并提供接口 4、新增“系统_主板发声”,通用控制主板扬声器发声频率和节奏来发出声响; 5、新增“类_屏幕亮度”,直接调整屏幕的亮度; 6、新增“程序_锁定到任务栏”将指定文件锁定到任务栏; 7、新增“网页_文字翻译”,调用有道接口,支持中翻英,多语翻中; 二、修复 1、修复“提示框”命令参数为空的情况下出现的BUG;感谢【@一霖之家 】反馈 2、修复“菜单_取ID”命令未公开的BUG;感谢【@[Love娇] 】反馈 3、修复“自绘窗口_枚举角色”内部命令参数缺失的BUG;感谢【@凌哥 】反馈 4、修复“编码_Utf8到Unicode”转换错误的BUG;感谢【@xzhero 】反馈 5、修复“字节集_字节集转文本”返回数据判断的BUG;感谢【@lwb1978 】反馈 6、修复“类_托盘”-“气泡提示”与“置提示信息”调用显示错误的BUG; 7、修复“网页_更改IE版本”的参数错误,感谢【@BlackMarch 】的反馈; 8、修复“类_JSON-删属性”命令的BUG,支持删除一层属性; 9、修复“时间_格林威治转北京”转换错误的BUG;感谢【@haoyunlai 】反馈 10、修复“程序_重启”在调用通用对话后失效的BUG;感谢【@最恨VC 】反馈 三、优化 1、优化“文件_取格式”的返回信息;感谢【@204238095 】反馈 2、优化“自绘窗口_取信息”参数赋值的逻辑判断;感谢【@宝贝你变了· 】反馈 3、优化“自绘窗口_枚举角色”信息返回问题; 4、优化“窗口_取位置和大小”模块命令描述的错误; 精易模块 V6.2 what's new: (20180201) 一、新增 1、新增“进程_强力结束进程”,“进程_强力打开进程”,“进程_PID取路径”,“进程_定位”;感谢【@1185384801 】提供源码 2、新增“时间_取北京时间EX”,利用请求百度返回头计算北京时间;感谢【@aqwvwv 】反馈并提供源码 二、修复 1、修复“程序_内存中运行EXE”代码错误导致无法运行的问题; 2、修复“进程_提升权限”命令的参数赋值的错误;感谢【@yucos 】反馈 3、修复“类_FTP-目录下载”参数缺失的错误;感谢【@l1294066497 】反馈 4、修复“系统_修改MAC地址”参数替换的错误,修正参数备注信息;感谢【@小花生 】反馈 三、优化 1、优化“文件_枚举ex”后缀名参数的传入,支持“*.后缀名”和直接传入“后缀名”;感谢【@379061296 】反馈 2、优化“窗口_渐隐渐现”,将原有参数“渐隐后是否结束”修改为”渐隐后操作“,可选操作结束\关闭\隐藏;感谢【@endless1 】反馈 3、优化“网页_取网址文件名”逻辑判断导致取文件名失败的BUG;感谢【@vSpear 】反馈 4、优化“文件_路径是否规范”文件名里包含非法字符的错误判断;感谢【@漫辰 】反馈 四、其他更新 1、移除部分命令; 精易模块 V6.1 what's new: (20180105) 一、新增 1、增加“系统_取网卡信息”,引用【@剩下我de孩子气 】开源,感谢【@鲁凯啸 】推荐 2、增加“程序_内存中运行EXE”,引用【@易语言我吃了 】开源; 3、增加“网页_更改IE版本”,最高支持本地IE浏览器最高版本; 二、修复 1、修复“文本_转拼音”转换逻辑错误; 2、修复“文本_解密”参数一注释的错误; 3、修复“音乐_时长”获取时长失败的BUG; 4、修复“类_POST数据”“添加”方法编码逻辑的错误; 三、优化 1、优化部分命令未公开的疏忽; 精易模块 V6.0 what's new: (20180102) 一、新增 1、增加“窗口_取父句柄EX”命令,针对置父窗口的取父窗口句柄; 2、增加“类_json”取类型,支持取逻型; 3、增加“时间_取北京时间”命令,感谢易友【qi115300】反馈,【Mr.Yang】提供新接口; 4、增加“鼠标_移入移出”等相关命令,感谢易友【不想说话的树】提供源码; 5、增加“信号量”相关命令; 6、增加“编码_URL编码EX”,支持对&符号的处理。感谢易友【不想说话的树】反馈并提供源码; 7、增加“类_位图处理-位图二值化”阀值功能; 8、增加“进度条_模拟S”功能,可控性更高;感谢【yangyitzzg】反馈并提供源码; 9、增加“类_配置项ex”,简约读写配置项。感谢【果子】提供源码; 10、增加“类_列队”,更加灵活的列队操作; 11、增加“类_POST数据类”、“类_POST数据类_字节集”,更加直观地操作数据包与协议头; 12、增加“程序_生成GUID”“程序_COM生成GUID”,生成标准的GUID格式; 13、增加“快速文本”,文本的快速累加操作; 14、增加“系统_添加计划任务”,“系统_删除计划任务”,添加删除系统计划任务; 15、增加“音乐_时长”,“音乐_进度”补全音乐播放基础功能; 16、增加“网页_eval加密”,“网页_eval解密”; 17、增加“文本_取随机Ip”; 18、增加“系统_修改用户名”,cmd方式直接修改用户名; 19、增加“自绘窗口_格式化信息”,“自绘窗口_解析”,“自绘窗口_枚举角色”,“自绘窗口_取信息”,“自绘窗口_鼠标点击”,“自绘窗口_投递文本”; 20、增加“类_Accessible”解析自绘窗口,感谢【酷宝贝】授权使用。 二、修复 1、修复“校验_取md5_文本”参数错误的BUG; 2、修复“ 图片_屏幕区域截图”在宽度负数的情况下报错的BUG; 3、修复“时间_取北京时间戳”无法取出的BUG; 三、优化 1、优化“类_FTP”上传目录逻辑判断的BUG,感谢【猥琐小胖子】反馈; 2、优化“类_FTP-目录下载”中针对下载失败的信息返回,感谢【糖心疼】反馈; 3、优化“程序_加入右键菜单”,“系统_关联右键菜单带图标”命令 感谢【jr21066】反馈; 4、优化“音乐_播放”只能播放一次的BUG。感谢【不想说话的树】反馈; 四、其他更新 1、移除“类_线程池1”,“类_数据操作”,“类_XML”; 2、“类_系统还原”合并到“系统_”程序集; 3、“类_系统域”合并到“系统_”程序集;

110,565

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧