C#实现对AES加密和解密的方法
AES简介
AES(TheAdvancedEncryptionStandard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。
AES是一个新的可以用于保护电子数据的加密算法。明确地说,AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。以下是我经过整理的代码,希望对大家有所帮助:
///<summary>
///ASE加解密
///</summary>
publicclassAESHelper
{
///<summary>
///获取密钥
///</summary>
privatestaticstringKey
{
get
{
return"abcdef1234567890"; ////必须是16位
}
}
//默认密钥向量
privatestaticbyte[]_key1={0x12,0x34,0x56,0x78,0x90,0xAB,0xCD,0xEF,0x12,0x34,0x56,0x78,0x90,0xAB,0xCD,0xEF};
///<summary>
///AES加密算法
///</summary>
///<paramname="plainText">明文字符串</param>
///<returns>将加密后的密文转换为Base64编码,以便显示</returns>
publicstaticstringAESEncrypt(stringplainText)
{
//分组加密算法
SymmetricAlgorithmdes=Rijndael.Create();
byte[]inputByteArray=Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组
//设置密钥及密钥向量
des.Key=Encoding.UTF8.GetBytes(Key);
des.IV=_key1;
byte[]cipherBytes=null;
using(MemoryStreamms=newMemoryStream())
{
using(CryptoStreamcs=newCryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write))
{
cs.Write(inputByteArray,0,inputByteArray.Length);
cs.FlushFinalBlock();
cipherBytes=ms.ToArray();//得到加密后的字节数组
cs.Close();
ms.Close();
}
}
returnConvert.ToBase64String(cipherBytes);
}
///<summary>
///AES解密
///</summary>
///<paramname="cipherText">密文字符串</param>
///<returns>返回解密后的明文字符串</returns>
publicstaticstringAESDecrypt(stringshowText)
{
byte[]cipherText=Convert.FromBase64String(showText);
SymmetricAlgorithmdes=Rijndael.Create();
des.Key=Encoding.UTF8.GetBytes(Key);
des.IV=_key1;
byte[]decryptBytes=newbyte[cipherText.Length];
using(MemoryStreamms=newMemoryStream(cipherText))
{
using(CryptoStreamcs=newCryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Read))
{
cs.Read(decryptBytes,0,decryptBytes.Length);
cs.Close();
ms.Close();
}
}
returnEncoding.UTF8.GetString(decryptBytes).Replace("\0",""); ///将字符串后尾的"\0"去掉
}
}
Key的值可以放在config文件中,也可放入数据库中。
相关文章
- C#正则表达式大全
- 扫描仪对接(C#)
- c# mysql executenonquery_c#数据四种执行方法(ExecuteNonQuery)
- c# mysql executenonquery_C#与数据库访问技术之ExecuteNonQuery方法
- C#设计模式——(结构型-适配器设计模式)
- C#应用Newtonsoft.Json操作json详解编程语言
- 效控制C#中label输出文字的长度,自动换行
- asp.net(c#)判断远程图片是否存在
- C#操作符之三元操作符浅析
- C#Winform调用系统接口操作INI配置文件的代码
- c#可变数目参数params实例
- c#winform窗口一直置顶显示在桌面最上方或最底层的方法
- C#生成随机字符串的实例
- c#获取本机的IP地址的代码
- C#三种判断数据库中取出的字段值是否为空(NULL)的方法
- c#文本加密程序代码示例
- c#调用Surfer软件,添加引用的具体操作方法
- C#引用类型作为方法的参数分析
- asp.net中C#实现手动回收内存的方法
- C#获得文件属性信息的实现方法
- C#实现将千分位字符串转换成数字的方法
- C#使用RenderControl将GridView控件导出到EXCEL的方法
- C#实现Stream与byte[]之间的转换实例教程
- C#控制台程序中处理2个关闭事件的代码实例