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
/// <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
/// <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
/// 获得密钥
/// </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

参考文档:
KeyProvider.KeyProviderRijndael对称加密算法使用|开发框架加密工具
如何修改C/S框架默认的对称加密(Rijndael)密码?
关于C/S快速开发框架采用的文本加密解密策略|C/S框架网
C#.NET史上最全字符串加密/解密/数字签名工具(CryptoHelper.cs)
【原创】C# IKVM加密解密机AES对称加密模式AES-128-ECB,补码方式 PKCS5Padding
加密解密tb_DataSet/tb_MyUser表的密码|C/S框架网
StrUtils类:字符串处理/加密解密函数库
登录账号的密码加密方式和数据库的加密一样的吗?
WebApi返回的ModelResponse对象的Data属性的数据加密或不加密
C# MD5字符串文本加密
WebApi框架CmdLogin.Login方法返回的数据是加密的
开发框架使用.NET Reactor(加壳+代码混淆)与加密狗加密有什么区别
mstsc远程桌面提示:这可能是由于 CredSSP 加密数据库修正 解决方案
CSFrameworkV5.DemoTester测试加密解密工具
出现身份验证错误,要求的函数不受支持。这可能是由于CredSSP加密Oracle修正
建议使用.NET Reactor进行DLL,EXE加密后再发布给用户使用
KeyProvider.KeyProviderRijndael对称加密算法使用|开发框架加密工具
如何修改C/S框架默认的对称加密(Rijndael)密码?
关于C/S快速开发框架采用的文本加密解密策略|C/S框架网
C#.NET史上最全字符串加密/解密/数字签名工具(CryptoHelper.cs)
【原创】C# IKVM加密解密机AES对称加密模式AES-128-ECB,补码方式 PKCS5Padding
加密解密tb_DataSet/tb_MyUser表的密码|C/S框架网
StrUtils类:字符串处理/加密解密函数库
登录账号的密码加密方式和数据库的加密一样的吗?
WebApi返回的ModelResponse对象的Data属性的数据加密或不加密
C# MD5字符串文本加密
WebApi框架CmdLogin.Login方法返回的数据是加密的
开发框架使用.NET Reactor(加壳+代码混淆)与加密狗加密有什么区别
mstsc远程桌面提示:这可能是由于 CredSSP 加密数据库修正 解决方案
CSFrameworkV5.DemoTester测试加密解密工具
出现身份验证错误,要求的函数不受支持。这可能是由于CredSSP加密Oracle修正
建议使用.NET Reactor进行DLL,EXE加密后再发布给用户使用
其它资料:
什么是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内容管理系统 |
什么是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内容管理系统 |
在线客服
