C# Rijndael Encrypt加密/Decrypt解密算法
C# Rijndael Encrypt加密/Decrypt解密算法
C# Code: /// <summary> /// Rijndael加密 /// </summary> /// <param name="clearText">明文</param> /// <param name="key">key:8位</param> /// <param name="iv">iv:8位</param> /// <returns></returns> public static string RijndaelEncrypt(string clearText, string key, string iv) { try { if (String.IsNullOrWhiteSpace(clearText)) return ""; RijndaelManaged Rijndael = new RijndaelManaged(); byte[] bytIn = UTF8Encoding.UTF8.GetBytes(clearText); MemoryStream ms = new MemoryStream(); Rijndael.Key = GetLegalKey(Rijndael, key); Rijndael.IV = GetLegalIV(Rijndael, iv); ICryptoTransform encrypto = Rijndael.CreateEncryptor(); CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write); cs.Write(bytIn, 0, bytIn.Length); cs.FlushFinalBlock(); ms.Close(); byte[] bytOut = ms.ToArray(); return Convert.ToBase64String(bytOut); } catch { return string.Empty; } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 C# Code: /// <summary> /// Rijndael解密 /// </summary> /// <param name="encryptedText">加密的文本</param> /// <param name="key">key:8位</param> /// <param name="iv">iv:8位</param> /// <returns></returns> public static string RijndaelDecrypt(string encryptedText, string key, string iv) { try { if (String.IsNullOrWhiteSpace(encryptedText)) return ""; RijndaelManaged Rijndael = new RijndaelManaged(); byte[] bytIn = Convert.FromBase64String(encryptedText); MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length); Rijndael.Key = GetLegalKey(Rijndael, key); Rijndael.IV = GetLegalIV(Rijndael, iv); ICryptoTransform encrypto = Rijndael.CreateDecryptor(); CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read); StreamReader sr = new StreamReader(cs); return sr.ReadToEnd(); } catch { return string.Empty; } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 C# Code: /// <summary> /// 获得密钥 /// </summary> /// <returns>密钥</returns> private static byte[] GetLegalKey(RijndaelManaged Rijndael, string key) { string KeyTemp = key; Rijndael.GenerateKey(); byte[] bytTemp = Rijndael.Key; int KeyLength = bytTemp.Length; if (KeyTemp.Length > KeyLength) KeyTemp = KeyTemp.Substring(0, KeyLength); else if (KeyTemp.Length < KeyLength) KeyTemp = KeyTemp.PadRight(KeyLength, ' '); return ASCIIEncoding.ASCII.GetBytes(KeyTemp); } /// <summary> /// 获得初始向量IV /// </summary> /// <returns>初试向量IV</returns> private static byte[] GetLegalIV(RijndaelManaged Rijndael, string iv) { string IVTemp = iv; Rijndael.GenerateIV(); byte[] bytTemp = Rijndael.IV; int IVLength = bytTemp.Length; if (IVTemp.Length > IVLength) IVTemp = IVTemp.Substring(0, IVLength); else if (IVTemp.Length < IVLength) IVTemp = IVTemp.PadRight(IVLength, ' '); return ASCIIEncoding.ASCII.GetBytes(IVTemp); } //来源:C/S框架网 | www.csframework.com | QQ:23404761 扫一扫加微信
参考文档:
StrUtils类:字符串处理/加密解密函数库 C#.NET史上最全字符串加密/解密/数字签名工具(CryptoHelper.cs) 加密解密tb_DataSet/tb_MyUser表的密码|C/S框架网 关于C/S快速开发框架采用的文本加密解密策略|C/S框架网 【原创】C# IKVM加密解密机AES对称加密模式AES-128-ECB,补码方式 PKCS5Padding C#使用分词算法从文本字符串中抽取关键词模拟百度搜索|CSFramework.COM巨献 C#模拟百度搜索长词自动语义匹配,使用分词算法抽取关键词 模拟搜索引擎中文自动分词算法精华(CSFramework特别提供C#源码) 模拟百度搜索渲染HTML页面关键词高亮分组排序算法(C#) CSFramework模拟百度搜索引擎自动语义分析分词算法(C#) KeyProvider.KeyProviderRijndael对称加密算法使用|开发框架加密工具 CSFrameworkV5.DemoTester测试加密解密工具 如何修改C/S框架默认的对称加密(Rijndael)密码? C# MD5字符串文本加密 C# 本地图片缓存器ImageFileCache (www.csframework.com)
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |