C#提供 AES 加密和解密功能

  • 密钥和初始化向量:

    • Key: 用于 AES 加密的密钥,长度为 32 字节(256 位),使用 UTF-8 编码的字符串。
    • IV: 初始化向量,长度为 16 字节(128 位),也使用 UTF-8 编码的字符串。
  • IsOpenEncrypt:

    • 布尔值,用于控制是否开启加密功能。如果设置为 false,则不会进行加密或解密操作。
  • Encrypt 方法:

    • 参数: plainText(明文字符串)。
    • 返回值: 返回加密后的字符串(Base64 编码)。
    • 逻辑:
      • 如果 IsOpenEncryptfalse,直接返回明文。
      • 创建一个 Aes 对象,设置密钥和初始化向量。
      • 使用 CryptoStreamStreamWriter 将明文写入流中进行加密。
      • 最后,将加密后的字节数组转换为 Base64 字符串并返回。
  • Decrypt 方法:

    • 参数: cipherText(密文字符串,Base64 编码)。
    • 返回值: 返回解密后的字符串(明文)。
    • 逻辑:
      • 如果 IsOpenEncryptfalse,直接返回密文。
      • 创建一个 Aes 对象,设置密钥和初始化向量。
      • 使用 CryptoStreamStreamReader 从流中读取解密数据。
      • 返回解密后的明文。

详细脚本:

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

    public static class EncryptionHelper
    {
        private static readonly byte[] Key = Encoding.UTF8.GetBytes("*****************"); // 32 字节(英文字母)密钥
        private static readonly byte[] IV = Encoding.UTF8.GetBytes("*************"); // 16 字节初始化向量

        /// <summary>
        /// 是否开启加密
        /// </summary>
        private static bool IsOpenEncrypt=true;

        /// <summary>
        /// 加密
        /// </summary>
        /// <param name="plainText"></param>
        /// <returns></returns>
        public static string Encrypt(string plainText)
        {
            if (!IsOpenEncrypt) return plainText;

            using (Aes aes = Aes.Create())
            {
                aes.Key = Key;
                aes.IV = IV;

                using (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());
                }
            }
        }

        /// <summary>
        /// 解密
        /// </summary>
        /// <param name="cipherText"></param>
        /// <returns></returns>
        public static string Decrypt(string cipherText)
        {
            if (!IsOpenEncrypt) return cipherText;

            using (Aes aes = Aes.Create())
            {
                aes.Key = Key;
                aes.IV = IV;

                using (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();
                }
            }
        }
    }


加密后内容:

解密后内容:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值