C#对称加密(AES)的简单代码

一、名词解释

AES:AES(Advanced Encryption Standard)是一种对称加密算法,采用分块加密机制处理128位数据块,支持128/192/256位密钥长度。

Key:密钥,是加密算法的核心参数,用于对数据进行加密或解密。长度通常为128位(16字节)、192位(24字节)或256位(32字节),具体长度根据算法模式选择确定。 ‌

IV:初始化向量,是一个固定长度的随机数,长度为128位(16字节),用于增强加密安全性。其核心作用是确保使用同一密钥加密相同明文时生成不同密文,避免安全漏洞。

二、代码示例

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

/// <summary>加密字符串</summary>
/// <param name="plainText">需要加密的明文</param>
/// <param name="key">加密密钥</param>
/// <param name="iv">初始化向量</param>
/// <returns>返回Base64编码的字符串</returns>
public string Encrypt(string plainText,string key,string iv) {
    string cipherText;
    using (Aes aes = Aes.Create()) {
        aes.Key=Encoding.UTF8.GetBytes(key);
        aes.IV=Encoding.UTF8.GetBytes(iv);
        ICryptoTransform encryptor = aes.CreateEncryptor();
        byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
        byte[] encryptedData = encryptor.TransformFinalBlock(plainTextBytes, 0, plainTextBytes.Length);
        cipherText = Convert.ToBase64String(encryptedData);
    }
    return cipherText;
}

/// <summary>解密字符串</summary>
/// <param name="cipherText">通过Encrypt加密得到的Base64编码的字符串</param>
/// <param name="key">解密密钥,要与加密密钥相同</param>
/// <param name="iv">初始化向量,要与加密的初始化向量相同</param>
/// <returns>返回解密后的字符串</returns>
public string Decrypt(string cipherText,string key,string iv) {
    string plainText;
    using (Aes aes = Aes.Create()) {
        aes.Key= Encoding.UTF8.GetBytes(key);
        aes.IV = Encoding.UTF8.GetBytes(iv);
        ICryptoTransform decryptor = aes.CreateDecryptor();
        byte[] plainTextBytes=Convert.FromBase64String(cipherText);
        byte[] decryptedData=decryptor.TransformFinalBlock(plainTextBytes,0,plainTextBytes.Length);
        plainText=Encoding.UTF8.GetString(decryptedData);
    }
    return plainText;
}
相关推荐
乐迪信息2 分钟前
乐迪信息:AI摄像机识别煤矿出入井车辆数量异常检测
大数据·运维·人工智能·物联网·安全
百度安全24 分钟前
百度办公网安全秘诀分享——兼顾安全与效率
安全·网络安全·dubbo·办公安全
张人玉36 分钟前
c# DataSet 类
数据库·c#·dataset
秦苒&1 小时前
【C语言】详解数据类型和变量(一):数据类型介绍、 signed和unsigned、数据类型的取值范围、变量、强制类型转换
c语言·开发语言·c++·c#
acrelgxy1 小时前
实时预警,安全无忧|安科瑞AIM-D500-CA绝缘监测仪,为您的电气系统保驾护航!
安全·电能管理系统·电力监控系统·智能电力仪表
一三检测冯野180212918131 小时前
振动下的安全防线:ASTM D999如何守护新能源电池运输命脉
安全·新能源电池·模拟运输测试·包装运输测试·包装振动测试
c#上位机1 小时前
C#异步编程之async、await
开发语言·c#
wanhengidc1 小时前
裸金属服务器都有哪些优势?
运维·服务器·安全·智能手机·生活
_可乐无糖1 小时前
内网穿透工具使用指南:ngrok 和 cpolar
安全·macos·云计算
郑州光合科技余经理1 小时前
实战分享:如何构建东南亚高并发跑腿配送系统
java·开发语言·javascript·spring cloud·uni-app·c#·php