.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
View Code
复制代码

使用示例:

string key = "123";
string result1 = SecurityHelper.AesEncrypt("张三丰", key);
Console.WriteLine(result1); //o7TgaEbkrWOzUMOPdnrh8Q==

string result2 = SecurityHelper.AesDecrypt(result1, key);
Console.WriteLine(result2); //张三丰

 

更多:

.Net Core Base64加密解密

.Net Core Md5加密整理

.Net Core HTML解析利器之HtmlAgilityPack

posted @   天马3798  阅读(9270)  评论(1编辑  收藏  举报
编辑推荐:
· 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应用程序请求生命周期
点击右上角即可分享
微信分享提示