c# 文本加密解密

在C#中实现加密功能,您可以使用.NET框架提供的System.Security.Cryptography命名空间下的多种加密算法类。这里我将给出一个使用AES(Advanced Encryption Standard)对称加密算法的简单示例:

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

public class AesEncryptionExample
{
    public static void Main()
    {
        // 加密部分
        string plainText = "这是一段需要加密的文本";
        byte[] keyBytes = Encoding.UTF8.GetBytes("这是一个16字节的密钥"); // AES密钥必须为16/24/32个字节
        byte[] ivBytes = new byte[16]; // 初始化向量,AES要求16个字节

        // 使用随机数生成器初始化IV
        RandomNumberGenerator.Create().GetBytes(ivBytes);

        using (AesManaged aes = new AesManaged())
        {
            aes.Key = keyBytes;
            aes.IV = ivBytes;

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

            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
                {
                    using (StreamWriter sw = new StreamWriter(cs))
                    {
                        sw.Write(plainText);
                    }
                    byte[] cipherTextBytes = ms.ToArray();
                    Console.WriteLine("加密后的数据:");
                    Console.WriteLine(Convert.ToBase64String(cipherTextBytes));
                }
            }
        }

        // 解密部分
        byte[] encryptedData = Convert.FromBase64String("这里是加密后Base64编码的数据");
        using (AesManaged aesDecryptor = new AesManaged())
        {
            aesDecryptor.Key = keyBytes;
            aesDecryptor.IV = ivBytes;

            ICryptoTransform decryptor = aesDecryptor.CreateDecryptor();

            using (MemoryStream msDecrypt = new MemoryStream(encryptedData))
            {
                using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                {
                    using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                    {
                        string decryptedText = srDecrypt.ReadToEnd();
                        Console.WriteLine("\n解密后的数据:");
                        Console.WriteLine(decryptedText);
                    }
                }
            }
        }
    }
}

这个例子展示了如何使用AES加密和解密字符串。注意在实际应用中,密钥应通过安全的方式存储和传递,并且可能需要使用密码派生函数(如Rfc2898DeriveBytes)从用户输入的密码生成密钥和初始化向量。此外,在传输或存储密文时,通常会一起保存IV,以便于解密。

相关推荐
武藤一雄9 分钟前
C#:nameof 运算符全指南
开发语言·microsoft·c#·.net·.netcore
CSharp精选营2 小时前
聊一聊 C# 中的闭包陷阱:foreach 循环的坑你还记得吗?
c#·foreach·循环·for循环
月巴月巴白勺合鸟月半2 小时前
FHIR 的使用
人工智能·c#·fhir
公子小六2 小时前
基于.NET的Windows窗体编程之WinForms控件简介
windows·microsoft·c#·.net
观无4 小时前
mysql5.7下载地址
c#
武藤一雄4 小时前
C# 核心技术解析:Parse vs TryParse 实战指南
开发语言·windows·microsoft·微软·c#·.netcore
代数狂人4 小时前
在Godot中应用面向对象原则:C#脚本实践
c#·游戏引擎·godot
斌味代码4 小时前
RAG 实战:用 LangChain + DeepSeek 搭建企业私有知识库问答系统
开发语言·langchain·c#
张人玉6 小时前
C#类常用知识总结Pro
服务器·c#
武藤一雄6 小时前
深入理解 C# 中的 sizeof 与非托管类型约束
开发语言·windows·c#·.net·.netcore