aes加密解密算法c#
时间: 2024-08-15 17:04:13 浏览: 33
AES(Advanced Encryption Standard)是一种对称加密算法,常用于保护敏感数据的安全传输。在C#中,可以使用System.Security.Cryptography命名空间下的Aes类来进行AES加密和解密操作。以下是一个简单的示例:
```csharp
using System;
using System.IO;
using System.Security.Cryptography;
public class AESExample
{
private static readonly byte[] Salt = Encoding.ASCII.GetBytes("Your Salt Value"); // 随机盐值增加安全性
private static Aes aes = Aes.Create();
private static Rfc2898DeriveBytes keyDeriver = new Rfc2898DeriveBytes("Your Password", Salt); // 密钥从密码生成
public static void Encrypt(string input, string outputFilePath)
{
aes.Key = keyDeriver.GetBytes(aes.KeySize / 8);
aes.IV = keyDeriver.GetBytes(aes.BlockSize / 8);
using (var encryptor = aes.CreateEncryptor())
{
using (var msOutput = new FileStream(outputFilePath, FileMode.Create))
{
var cryptoStream = new CryptoStream(msOutput, encryptor, CryptoStreamMode.Write);
using (var sw = new StreamWriter(cryptoStream))
{
sw.Write(input);
}
}
}
}
public static string Decrypt(string inputFile, string outputFilePath)
{
try
{
aes.Key = keyDeriver.GetBytes(aes.KeySize / 8);
aes.IV = keyDeriver.GetBytes(aes.BlockSize / 8);
using (FileStream fsInput = File.OpenRead(inputFile))
{
using (var decryptor = aes.CreateDecryptor())
{
using (CryptoStream cs = new CryptoStream(fsInput, decryptor, CryptoStreamMode.Read))
{
using (StreamReader sr = new StreamReader(cs))
{
return sr.ReadToEnd();
}
}
}
}
}
catch (Exception ex)
{
throw new Exception($"Error decrypting file: {ex.Message}");
}
}
}
// 使用示例:
string originalText = "Your Secret Text";
AESExample.Encrypt(originalText, "Encrypted.txt");
string decryptedText = AESExample.Decrypt("Encrypted.txt", "Decrypted.txt");