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,以便于解密。

相关推荐
longxiaozhang61 小时前
C#异常处理:程序出错了怎么办?
开发语言·数据库·c#
界面开发小八哥2 小时前
界面控件DevExpress WinForms中文帮助文档 - 入门指南
ai·c#·.net·devexpress·ui开发·winforms
清风与日月2 小时前
Yitter.IdGenerator:高性能分布式唯一ID生成器详解
分布式·c#·.net·.netcore
影寂ldy3 小时前
C# WinForm TCP-Socket
网络·tcp/ip·c#
czhc11400756634 小时前
2026-08-25 博客:现场排查的 8 个坑
c#
Z5998178414 小时前
c#软件开发学习笔记--WPF(控件、样式)
笔记·学习·c#
格林威5 小时前
C#高位深相机图像保存:12位16位图像保存方案,OpenCvSharp和Halcon实现
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
雪隐5 小时前
WPF + MVVM 实战系列03-MVVM 的边界之争,终于有人画了条“差不多”的线
c#
影寂ldy5 小时前
C# WinForm TCP聊天室(服务端+客户端)
windows·tcp/ip·c#
七仔啊6 小时前
C#、.NET 、ASP.NET Core、Visual Studio全系列快速入门
c#·asp.net·.net