| 因项目需要,要用js加密后,提交给C#解密, 在网上找了半天,网上有无数个版本,却找不到一个能互相使用的
 甚至就连都是js版本的,都不能互通,汗一个。
 因为时间关系,没有去深究加密代码,就随便下载了一个JS版本的,
 并把它改写成C#版本的
 这样JS加密后的结果,C#也能解密
 反之C#加密后的结果,JS也能解密
 我把它发出来给大家共享吧
 注:源代码是VS.Net2008版本创建的,里面包含js的加解密函数和C#的加解密函数
 
 如果你找到什么bug,或有啥好建议,不妨联系一下俺,呵呵:
 btw:在改写过程中,JS支持带符号位右移(>>>操作符),而C#不支持,
 非要把int转换成uint,再右移(>>操作符)
 而operator又不支持>>>
 只好写一个别的函数了。
 打包下载地址
 下面是以前的代码,大家可以参考下
 
 复制代码 代码如下: C#和javascript可以通用的教加密解密函数
 用C#实现的DES加密与解密:
 protected void Page_Load(object sender, EventArgs e)
 {
 string data = "testdes"; //要加密的数据
 byte[] _data = System.Text.Encoding.Unicode.GetBytes(data);
 string keyStr = "1234"; //密钥
 string ivStr = "abcd"; //初始化向量
 byte[] key = System.Text.Encoding.Unicode.GetBytes(keyStr);
 byte[] iv = System.Text.Encoding.Unicode.GetBytes(ivStr);
 string encData = Encrypt(data, key, iv);
 string decData = Decrypt(encData, key, iv);
 Response.Write("原数据:" + data + "<br />";
 Response.Write("加密后的数据:" + encData + "<br />";
 Response.Write("解密后的数据:" + decData + "<br />";
 
 }
 
 //加密算法
 private static string Encrypt(string data, byte[] key, byte[] iv)
 {
 //if (null == key || null == iv)
 // InitKeyAndIV();
 
 byte[] _data = System.Text.Encoding.Unicode.GetBytes(data);
 MemoryStream ms = new MemoryStream();
 DESCryptoServiceProvider des = new DESCryptoServiceProvider();
 des.Key = key;
 des.IV = iv;
 //生成加密器实例
 ICryptoTransform trans = des.CreateEncryptor();
 CryptoStream cs = new CryptoStream(ms, trans, CryptoStreamMode.Write);
 //加密数据,并将数据写入流
 cs.Write(_data, 0, _data.Length);
 cs.FlushFinalBlock();
 string result = Convert.ToBase64String(ms.ToArray());
 ms.Close();
 cs.Close();
 return result;
 }
 
 //解密
 private static string Decrypt(string data, byte[] key, byte[] iv)
 {
 byte[] _data = Convert.FromBase64String(data);
 DESCryptoServiceProvider des = new DESCryptoServiceProvider();
 MemoryStream ms = new MemoryStream();
 CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(key, iv), CryptoStreamMode.Write);
 cs.Write(_data, 0, _data.Length);
 cs.FlushFinalBlock();
 string result = System.Text.Encoding.Unicode.GetString(ms.ToArray());
 ms.Close();
 cs.Close();
 return result;
 }
 
 (编辑:宣城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |