C# AES加密算法,可以实现逆向解密成明文

文章详细描述了如何使用AES加密算法对字符串进行加密和解密,涉及密钥和初始化向量的管理,以及Base64编码的应用过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

private byte[] key; // 存储加密密钥
private byte[] iv; // 存储初始化向量
//加密方法
public string Encrypt(string text)
{
    byte[] plainTextBytes = Encoding.UTF8.GetBytes(text); // 将文本转换为字节数组

    using (Aes aes = Aes.Create()) // 使用AES加密算法
    {
        key = aes.Key; // 保存生成的密钥
        iv = aes.IV; // 保存生成的初始化向量

        using (ICryptoTransform encryptor = aes.CreateEncryptor(key, iv)) // 创建加密器
        {
            byte[] encryptedBytes = encryptor.TransformFinalBlock(plainTextBytes, 0, plainTextBytes.Length); // 进行加密
            byte[] combinedBytes = new byte[iv.Length + encryptedBytes.Length]; // 创建一个合并后的字节数组
            Array.Copy(iv, 0, combinedBytes, 0, iv.Length); // 复制初始化向量到合并数组的开头
            Array.Copy(encryptedBytes, 0, combinedBytes, iv.Length, encryptedBytes.Length); // 复制加密后的字节到合并数组
            return Convert.ToBase64String(combinedBytes); // 返回Base64编码的加密字符串
        }
    }
}
//解密方法
public int Decrypt(string encryptedText)
{
    byte[] combinedBytes = Convert.FromBase64String(encryptedText); // 将Base64编码的加密字符串转换为字节数组

    byte[] iv = new byte[16]; // 重新创建一个用于存储初始化向量的字节数组
    byte[] encryptedBytes = new byte[combinedBytes.Length - iv.Length]; // 创建一个用于存储加密后的字节数组

    Array.Copy(combinedBytes, 0, iv, 0, iv.Length); // 复制出初始化向量
    Array.Copy(combinedBytes, iv.Length, encryptedBytes, 0, encryptedBytes.Length); // 复制出加密后的字节

    using (Aes aes = Aes.Create()) // 使用AES加密算法
    {
        aes.Key = key; // 设置解密密钥
        aes.IV = iv; // 设置解密初始化向量

        using (ICryptoTransform decryptor = aes.CreateDecryptor(key, iv)) // 创建解密器
        {
            byte[] decryptedBytes = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length); // 进行解密
            string decryptedText = Encoding.UTF8.GetString(decryptedBytes); // 将解密后的字节数组转换为字符串
            return Convert.ToInt32(decryptedText); // 将解密后的字符串转换为整数并返回
        }
    } 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lucky.帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值