.Net Core AES加密解密
一、AES说明
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。它要求区块大小必须为128位,而密钥长度则可以为128、196、256位。
注:AES中秘钥的长度不正确(不为128位等),则抛出异常。
在.NET Core中对于对称加密统一接口不再利用不同类而实现,对于非对称加密当然和对称加密接口就不同了,创建起来格外方便,不再是实例化对应的类,
//对称加密 var aes = Aes.Create(); var tripleDES = TripleDES.Create(); //非对称加密 var rsa = RSA.Create();
二、加密代码整理

#region AES加密解密 /// <summary> /// 128位处理key /// </summary> /// <param name="keyArray">原字节</param> /// <param name="key">处理key</param> /// <returns></returns> private static byte[] GetAesKey(byte[] keyArray, string key) { byte[] newArray = new byte[16]; if (keyArray.Length < 16) { for (int i = 0; i < newArray.Length; i++) { if (i >= keyArray.Length) { newArray[i] = 0; } else { newArray[i] = keyArray[i]; } } } return newArray; } /// <summary> /// 使用AES加密字符串,按128位处理key /// </summary> /// <param name="content">加密内容</param> /// <param name="key">秘钥,需要128位、256位.....</param> /// <returns>Base64字符串结果</returns> public static string AesEncrypt(string content, string key, bool autoHandle = true) { byte[] keyArray = Encoding.UTF8.GetBytes(key); if (autoHandle) { keyArray = GetAesKey(keyArray, key); } byte[] toEncryptArray = Encoding.UTF8.GetBytes(content); SymmetricAlgorithm des = Aes.Create(); des.Key = keyArray; des.Mode = CipherMode.ECB; des.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = des.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Convert.ToBase64String(resultArray); } /// <summary> /// 使用AES解密字符串,按128位处理key /// </summary> /// <param name="content">内容</param> /// <param name="key">秘钥,需要128位、256位.....</param> /// <returns>UTF8解密结果</returns> public static string AesDecrypt(string content, string key, bool autoHandle = true) { byte[] keyArray = Encoding.UTF8.GetBytes(key); if (autoHandle) { keyArray = GetAesKey(keyArray, key); } byte[] toEncryptArray = Convert.FromBase64String(content); SymmetricAlgorithm des = Aes.Create(); des.Key = keyArray; des.Mode = CipherMode.ECB; des.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = des.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Encoding.UTF8.GetString(resultArray); } #endregion
使用示例:
string key = "123"; string result1 = SecurityHelper.AesEncrypt("张三丰", key); Console.WriteLine(result1); //o7TgaEbkrWOzUMOPdnrh8Q== string result2 = SecurityHelper.AesDecrypt(result1, key); Console.WriteLine(result2); //张三丰
更多:
分类:
.Net Core
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2016-04-12 AndroidSdk下载地址和环境变量配置
2014-04-12 HTML5新增的属性和废除的属性
2014-04-12 详解ASP.NET MVC应用程序请求生命周期