C# aes加密解密byte数组

cs 复制代码
using System.Security.Cryptography;
using System.Text;

namespace AESStu01;

public class AesHelper
{
    // AES加密密钥和向量(需要保密)  
    private static readonly string Key = "";//16长度字符串+数字混合

    private static readonly string IV = "";//16长度字符串+数字混合

    // 加密字节数组  
    public static byte[] Encrypt(byte[] plainBytes)
    {
        using (Aes aesAlg = Aes.Create())
        {
            aesAlg.Key = Encoding.UTF8.GetBytes(Key);
            aesAlg.IV = Encoding.UTF8.GetBytes(IV);

            ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);

            using (MemoryStream msEncrypt = new MemoryStream())
            {
                using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                {
                    csEncrypt.Write(plainBytes, 0, plainBytes.Length);
                    csEncrypt.Close();
                }

                return msEncrypt.ToArray();
            }
        }
    }

    // 解密字节数组  
    public static byte[] Decrypt(byte[] cipherBytes)
    {
        using (Aes aesAlg = Aes.Create())
        {
            aesAlg.Key = Encoding.UTF8.GetBytes(Key);
            aesAlg.IV = Encoding.UTF8.GetBytes(IV);
            ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

            using (MemoryStream msDecrypt = new MemoryStream())
            {
                using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Write))
                {
                    csDecrypt.Write(cipherBytes, 0, cipherBytes.Length);
                    csDecrypt.Close();
                }

                return msDecrypt.ToArray();
            }
        }
    }
}

测试

cs 复制代码
using AESStu01;

var orginData = new byte[]
{
    1, 2, 3, 4, 5
};
Console.WriteLine("AES加密");
var enData = AesHelper.Encrypt(orginData);
Console.WriteLine("加密后的的数据");
Console.WriteLine(string.Join(",",enData));
var deData = AesHelper.Decrypt(enData);
Console.WriteLine("解密后的的数据");
Console.WriteLine(string.Join(",",deData));
相关推荐
晓纪同学2 分钟前
QT创建一个模板槽和信号刷新UI
开发语言·qt·ui
WANGWUSAN668 分钟前
Python高频写法总结!
java·linux·开发语言·数据库·经验分享·python·编程
forNoWhat17 分钟前
java小知识点:比较器
java·开发语言
坐井观老天23 分钟前
在C#中使用资源保存图像和文本和其他数据并在运行时加载
开发语言·c#
代码中の快捷键30 分钟前
java开发面试有2年经验
java·开发语言·面试
Marzlam31 分钟前
sql server索引优化语句
开发语言·数据库
谢家小布柔36 分钟前
Java 中的字符串
java·开发语言
码老白36 分钟前
【老白学 Java】HashSet 应用 - 卡拉 OK(五)
java·开发语言
Code out the future1 小时前
【C++——临时对象,const T&】
开发语言·c++
taoyong0011 小时前
Java线程核心01-中断线程的理论原理
java·开发语言