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

相关推荐
上位机妹子5 小时前
EF Core 两种继承映射:每层次一张表(TPH)与每类型一张表(TPT)
数据库·c#·.netcore·ef core
小羊没烦恼!6 小时前
jQuery1.5的改进细节
java·服务器·开发语言·前端·c#
下页、再停留8 小时前
【C#桌面客户端系列学习-8】批量导出数据为csv格式
开发语言·c#·visual studio
波力海苔夹心脆6758 小时前
C# 视觉检测实战:PLC 按钮触发 VisionPro 检测,OK 亮灯 / NG 灭灯(西门子 PLC,含界面显示与图片存档)
开发语言·经验分享·c#·自动化·视觉检测·.net
kim10 小时前
一个人 + AI,用 WinForms 搓了个 376KB 的 Windows 便签:便签 / 截图 / 标注 / OCR / 待办全塞进去了
c#
hez201010 小时前
一行代码在 .NET 项目里启用 Satori GC
c#·.net·.net core·gc·clr
宇卿.10 小时前
C#语句:
开发语言·c#
咕白m62511 小时前
使用 C# 将 TIFF 转换为 PDF
前端·c#
JQLvopkk12 小时前
HslCommunication,一个工具测遍所有 PLC
开发语言·人工智能·c#·交互
下页、再停留12 小时前
【C#桌面客户端系列学习-7】数据查询展示
开发语言·c#·visual studio