C#之AES256位加密解密
2016-07-01 14:09
423 查看
密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
AES加密代码
AES解密代码
主程序入口,测试代码
密钥必须是32个字符(非中文),换句话说每个字符只能占1Byte。
AES加密代码
/// <summary> /// AES加密 //转载请注明来自 http://www.shang11.com /// </summary> /// <param name="encryptStr">明文</param> /// <param name="key">密钥</param> /// <returns></returns> public static string Encrypt(string encryptStr,string key) { byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key); byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(encryptStr); RijndaelManaged rDel = new RijndaelManaged(); rDel.Key = keyArray; rDel.Mode = CipherMode.ECB; rDel.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Convert.ToBase64String(resultArray, 0, resultArray.Length); }
AES解密代码
/// <summary> /// AES解密 /// </summary> /// <param name="decryptStr">密文</param> /// <param name="key">密钥</param> /// <returns></returns> public static string Decrypt(string decryptStr,string key) { byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key); byte[] toEncryptArray = Convert.FromBase64String(decryptStr); RijndaelManaged rDel = new RijndaelManaged(); rDel.Key = keyArray; rDel.Mode = CipherMode.ECB; rDel.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return UTF8Encoding.UTF8.GetString(resultArray); }
主程序入口,测试代码
static void Main(string[] args) { string encryptStr,decryptStr, key; key = "ae125efkk4454eeff444ferfkny6oxi8"; encryptStr = "C#AES加密字符串"; Console.WriteLine("============== 256位AES加密 ============\n"); Console.WriteLine("加密前的字符串:"+encryptStr); Console.WriteLine("密钥:" + key); Console.WriteLine(); decryptStr = Program.Encrypt(encryptStr,key); Console.WriteLine("加密后的字符串:" + decryptStr); encryptStr = Program.Decrypt(decryptStr, key); Console.WriteLine("解密后的字符串:" + encryptStr); Console.ReadKey(); }
注意事项
密钥必须是32个字符(非中文),换句话说每个字符只能占1Byte。
相关文章推荐
- C#数据导出到Excel文件
- 20 如何在C#中存一批数据,数组
- C#调试跟踪函数的使用及找出最大值及最大值所在索引
- c#数字转换为大写汉字
- C#StreamReader 读取Txt文件
- c#删除指定目录下所有内容:方法二--找到所有文件和子文件夹删除
- c#删除指定目录下所有内容
- C#移动文件夹中的所有文件夹与文件到另一个文件夹
- c# 复制文件夹中的所有文件夹与文件到另一个文件夹
- C# WinForm捕获全局异常
- C#通过获取CMD里ipconfig命令的结果来得到IP
- C#获取本机局域网地址
- c#获取公网IP
- c# 无法加载xxx.dll 找不到指定的模块
- github 添加 C# IGNORE
- C# word在指定位置插入图片,设置图片的属性
- c# 异常处理机制
- 详解C#中的反射
- C#动态调用WCF
- C#反射方法:程序集反射、类型反射、接口反射、类型成员反射