C# 64位 加密/解密类
/// <summary> /// 加密/解密类 /// </summary> public class EncAndDec { //加密/解密钥匙 const string KEY_64 = "jzw7tz8g";//注意了,是8个字符,64位 const string IV_64 = "tvbzn9i7";//注意了,是8个字符,64位 const string ClientLocal_KEY_64 = "xinxinwb"; const string ClientLocal_IV_64 = "39389993"; /// <summary> /// 加密的方法,通过2个密匙进行加密 /// </summary> /// <param name="data">加密的数据</param> /// <returns>返回加密后的字符串</returns> public static string Encode(string data) { EncAndDec ed = new EncAndDec(); return ed.Encode(data, KEY_64, IV_64); } /// <summary> /// 解密的方法 /// </summary> /// <param name="data">解密的数据</param> /// <returns>返回加密前的字符串</returns> public static string Decode(string data) { EncAndDec ed = new EncAndDec(); return ed.Decode(data, KEY_64, IV_64); } /// <summary> /// 客户本地加密的方法,通过2个密匙进行加密 /// </summary> /// <param name="data">加密的数据</param> /// <returns>返回加密后的字符串</returns> public static string EncodeClientLocal(string data) { EncAndDec ed = new EncAndDec(); return ed.Encode(data, ClientLocal_KEY_64, ClientLocal_IV_64); } /// <summary> /// 客户本地解密的方法 /// </summary> /// <param name="data">解密的数据</param> /// <returns>返回加密前的字符串</returns> public static string DecodeClientLocal(string data) { EncAndDec ed = new EncAndDec(); return ed.Decode(data, ClientLocal_KEY_64, ClientLocal_IV_64); } #region DEC加密的方法 /// <summary> /// 加密的方法,通过2个密匙进行加密 /// </summary> /// <param name="data">通过Md5加密一次</param> /// <param name="KEY_64"></param> /// <param name="IV_64"></param> /// <returns></returns> private string Encode(string data, string KEY_64, string IV_64) { KEY_64 = ToMD5(KEY_64); IV_64 = ToMD5(IV_64); byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64); byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); int i = cryptoProvider.KeySize; MemoryStream ms = new MemoryStream(); CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write); StreamWriter sw = new StreamWriter(cst); sw.Write(data); sw.Flush(); cst.FlushFinalBlock(); sw.Flush(); return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length); } /// <summary> /// 解密的方法() /// </summary> /// <param name="data"></param> /// <param name="KEY_64"></param> /// <param name="IV_64"></param> /// <returns></returns> private string Decode(string data, string KEY_64, string IV_64) { KEY_64 = ToMD5(KEY_64); IV_64 = ToMD5(IV_64); byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64); byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); byte[] byEnc; try { byEnc = Convert.FromBase64String(data); } catch { return null; } DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); MemoryStream ms = new MemoryStream(byEnc); CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read); StreamReader sr = new StreamReader(cst); return sr.ReadToEnd(); } #endregion #region MD5加密 /// <summary> /// 转换MD5密码 /// </summary> /// <param name="pass"></param> /// <returns></returns> public static string ToMD5(string KEY) { byte[] result = Encoding.Default.GetBytes(KEY); MD5 md5 = new MD5CryptoServiceProvider(); byte[] output = md5.ComputeHash(result); string KEY_64 = BitConverter.ToString(output).Replace("-", "").Substring(0, 8); return KEY_64; } #endregion }
本文来自博客园,作者:jevan,转载请注明原文链接:https://www.cnblogs.com/DoNetCShap/archive/2012/06/26/2563067.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端