c#加密和解密相关代码
作者:野牛程序员:2023-12-15 20:57:48C#阅读 2953
使用C#进行加密和解密通常涉及到.NET框架中的加密类库。下面是一个简单的示例,演示如何使用C#进行AES对称加密和解密:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
class Program
{
static void Main()
{
string plainText = "Hello, World!";
// 生成随机的密钥和初始化向量
byte[] key = GenerateRandomBytes(32); // 256 bits
byte[] iv = GenerateRandomBytes(16); // 128 bits
// 加密
byte[] encryptedText = Encrypt(plainText, key, iv);
// 解密
string decryptedText = Decrypt(encryptedText, key, iv);
// 输出结果
Console.WriteLine($"原始文本: {plainText}");
Console.WriteLine($"加密后: {Convert.ToBase64String(encryptedText)}");
Console.WriteLine($"解密后: {decryptedText}");
}
static byte[] GenerateRandomBytes(int length)
{
using (var rng = new RNGCryptoServiceProvider())
{
byte[] bytes = new byte[length];
rng.GetBytes(bytes);
return bytes;
}
}
static byte[] Encrypt(string plainText, byte[] key, byte[] iv)
{
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = key;
aesAlg.IV = iv;
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
}
return msEncrypt.ToArray();
}
}
}
static string Decrypt(byte[] cipherText, byte[] key, byte[] iv)
{
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = key;
aesAlg.IV = iv;
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(cipherText))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
}
}
}请注意,上述代码使用AES算法进行对称加密。在实际应用中,确保安全性需要更多考虑,例如安全地存储密钥和使用适当的加密模式。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

