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

相关推荐
He BianGu1 小时前
【WPF-VisionMaster】机器视觉通用平台V5.0版本发行说明
opencv·c#·wpf·halcon·机器视觉·visionmaster
tang_04271 小时前
【Hi.Ltd 专题】第9期:Interop 配置互操作(JSON/INI/XML/YAML/注册表/扫码)
经验分享·c#·hi.ltd系列
tang_04277 小时前
【Hi.Ltd 专题】第7期:Threading 采集线程、锁与 LRU 缓存
经验分享·c#·hi.ltd系列
A_nanda7 小时前
C# 界面卡顿:从定位到根治
c#
2501_930707789 小时前
使用C#代码为新创建的 Word 文档创建目录
c#·word
czhc114007566310 小时前
同一个数,两把尺子:六组“看着一样、其实不一样“
c#
花北城10 小时前
【C#底层库】access_token授权鉴权验证
c#·鉴权·token·授权
rick97711 小时前
C# 动态代理与 DispatchProxy:从原理到实战的完整指南
c#
tang_042711 小时前
【Hi.Ltd 专题】第8期:Managements 插件、单例与服务定位
经验分享·c#·hi.ltd系列
曹牧1 天前
C#:24小时制时间
c#