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;
}
相关推荐
JQLvopkk2 小时前
C# 工业级上位机:交互实战
开发语言·c#·交互
byoass2 小时前
企业云盘API集成指南:如何与CI/CD流水线打通
网络·安全·ci/cd·云计算
汽车仪器仪表相关领域2 小时前
Kvaser Memorator Professional HS/LS:高速 + 低速双通道 CAN 总线记录仪,跨系统诊断的专业级解决方案
网络·人工智能·功能测试·测试工具·安全·压力测试
sxdtzhp2 小时前
软件接口日限额实现方法与实践
安全·接口·日限额
JiaWen技术圈2 小时前
conntrack-tools 用法
linux·运维·服务器·安全·运维开发
AI周红伟3 小时前
周红伟:OpenClaw安全防控:OpenClaw+Skills+私有大模型安全部署、实操和企业应用实操
大数据·人工智能·深度学习·安全·copilot·openclaw
每日综合3 小时前
自托管安全吗?UKey Wallet拆解4大风险盲区
安全
JiaWen技术圈3 小时前
nf_tables 架构深度详解(内核级完整架构)
linux·服务器·安全·运维开发
YaBingSec3 小时前
玄机网络安全靶场:Apache HTTPD 解析漏洞(CVE-2017-15715)WP
java·笔记·安全·web安全·php·apache
kingwebo'sZone3 小时前
PdfiumViewer使用权限控制期操作按钮(PdfViewer其实也可以完整兼容)
c#