C#加密:AES加密


/// <summary>
/// .NET AES加密解密帮助类
/// </summary>
public class CryptoAESHelper
{
    /// <summary>
    /// Aes加解密钥必须32位
    /// </summary>
    public static string AesKey = "asekey32w";
    /// <summary>
    /// 获取Aes32位密钥
    /// </summary>
    /// <param name="key">Aes密钥字符串</param>
    /// <returns>Aes32位密钥</returns>
    static byte[] GetAesKey(string key)
    {
        if (string.IsNullOrEmpty(key))
        {
            throw new ArgumentNullException("key", "Aes密钥不能为空");
        }
        if (key.Length < 32)
        {
            // 不足32补全
            key = key.PadRight(32, '0');
        }
        if (key.Length > 32)
        {
            key = key.Substring(0, 32);
        }
        return Encoding.UTF8.GetBytes(key);
    }
    /// <summary>
    /// Aes加密
    /// </summary>
    /// <param name="source">源字符串</param>
    /// <param name="key">aes密钥,长度必须32位</param>
    /// <returns>加密后的字符串</returns>
    public static string EncryptAes(string source, string key)
    {
        using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider())
        {
            aesProvider.Key = GetAesKey(key);
            aesProvider.Mode = CipherMode.ECB;
            aesProvider.Padding = PaddingMode.PKCS7;
            using (ICryptoTransform cryptoTransform = aesProvider.CreateEncryptor())
            {
                byte[] inputBuffers = Encoding.UTF8.GetBytes(source);
                byte[] results = cryptoTransform.TransformFinalBlock(inputBuffers, 0, inputBuffers.Length);
                aesProvider.Clear();
                aesProvider.Dispose();
                return Convert.ToBase64String(results, 0, results.Length);
            }
        }
    }
    /// <summary>
    /// Aes解密
    /// </summary>
    /// <param name="source">源字符串</param>
    /// <param name="key">aes密钥,长度必须32位</param>
    /// <returns>解密后的字符串</returns>
    public static string DecryptAes(string source, string key)
    {
        using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider())
        {
            aesProvider.Key = GetAesKey(key);
            aesProvider.Mode = CipherMode.ECB;
            aesProvider.Padding = PaddingMode.PKCS7;
            using (ICryptoTransform cryptoTransform = aesProvider.CreateDecryptor())
            {
                byte[] inputBuffers = Convert.FromBase64String(source);
                byte[] results = cryptoTransform.TransformFinalBlock(inputBuffers, 0, inputBuffers.Length);
                aesProvider.Clear();
                return Encoding.UTF8.GetString(results);
            }
        }
    }

}
GarsonZhang www.yesdotnet.com

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
YES开发框架
上一篇:C#加密:DES加密
下一篇:C#加密:RSA加密解密
评论列表

发表评论

评论内容
昵称:
关联文章

C#加密AES加密
C#安全帮助类,提供MD5,AES加解密,SHA-1加密
C#加密:RSA加密解密
C#加密:SHA1
C#加密:DES加密
c#对于加密的一点整合 (AES,MD5,RSA,SHA256)
C#加密:MD5加密
C# RSA加密(私钥加密、公钥解密、密钥格式转换、支持超大长度分段加密)
文件加密技术研究
.NET DLL加密代码混淆 Eziriz .NET Reactor
windows磁盘加密,文件夹加密,打开分区需要先输入密码
C# 数据库连接字符串Microsoft.Data.Sqlite数据库连接
C#和java对URL编码(UrlEncode)的差异
C# SQLServer数据库连接
C# List排序
C# 指针简单使用
C#邮件发送
C#计算工龄/年龄
C# 执行Javascript脚本
C#中URL编码

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码