.NET AES加密

#region AES加密

        /// <summary>
        /// Aes加解密钥必须32位
        /// </summary>
        public static string AesKey = "你的秘钥 32位"; // 密钥
        /// <summary>
        /// 获取Aes32位密钥
        /// </summary>
        /// <param name="key">Aes密钥字符串</param>
        /// <returns>Aes32位密钥</returns>
        public 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);
                }
            }
        }
        #endregion

使用的时候 

加密:

 result = CommonFun.EncryptAes(result, CommonFun.AesKey);//result 为你要加密的数据

解密:

 result = CommonFun.DecryptAes(result, CommonFun.AesKey);//result 为你要解密的数据

要注意的是密钥一定要保存好!

好的,针对您的问题,我可以提供以下的代码示例来实现基于 .Net Core 的 AES 加密和解密。 加密: ```csharp public static string Encrypt(string plainText, byte[] key, byte[] iv) { using var aes = Aes.Create(); aes.Key = key; aes.IV = iv; var encryptor = aes.CreateEncryptor(aes.Key, aes.IV); using var msEncrypt = new MemoryStream(); using var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write); using var swEncrypt = new StreamWriter(csEncrypt); swEncrypt.Write(plainText); return Convert.ToBase64String(msEncrypt.ToArray()); } ``` 解密: ```csharp public static string Decrypt(string cipherText, byte[] key, byte[] iv) { using var aes = Aes.Create(); aes.Key = key; aes.IV = iv; var decryptor = aes.CreateDecryptor(aes.Key, aes.IV); using var msDecrypt = new MemoryStream(Convert.FromBase64String(cipherText)); using var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read); using var srDecrypt = new StreamReader(csDecrypt); return srDecrypt.ReadToEnd(); } ``` 其中,`plainText` 表示要加密的明文字符串,`key` 和 `iv` 分别表示 AES 加密算法中的密钥和向量。在加密和解密的过程中,我们需要使用 `Aes.Create()` 方法来创建一个 AES 实例,然后设置其 `Key` 和 `IV` 属性。接下来,我们需要使用 `CreateEncryptor()` 和 `CreateDecryptor()` 方法来分别创建加密器和解密器,最后通过 `CryptoStream` 和 `StreamWriter` 或 `StreamReader` 将明文或密文写入或读取。 需要注意的是,密钥和向量的长度需要根据所选的加密算法进行调整。在 AES 算法中,密钥长度可以为 128、192 或 256 位,向量长度为 128 位。同时,为了保证安全性,应该使用随机生成的密钥和向量,并妥善保管。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值