RijndaelManaged類是.NET框架中用于對稱加密和解密數據的類。下面是一個簡單的示例,演示如何使用RijndaelManaged類進行數據加密和解密:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public class Program
{
static void Main()
{
string plainText = "Hello, world!";
string key = "0123456789abcdef";
string iv = "fedcba9876543210";
byte[] encryptedData = EncryptData(plainText, key, iv);
string decryptedText = DecryptData(encryptedData, key, iv);
Console.WriteLine("Encrypted Data: " + Convert.ToBase64String(encryptedData));
Console.WriteLine("Decrypted Text: " + decryptedText);
}
static byte[] EncryptData(string plainText, string key, string iv)
{
using (RijndaelManaged rijndael = new RijndaelManaged())
{
rijndael.Key = Encoding.UTF8.GetBytes(key);
rijndael.IV = Encoding.UTF8.GetBytes(iv);
ICryptoTransform encryptor = rijndael.CreateEncryptor(rijndael.Key, rijndael.IV);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
byte[] plainBytes = Encoding.UTF8.GetBytes(plainText);
cs.Write(plainBytes, 0, plainBytes.Length);
}
return ms.ToArray();
}
}
}
static string DecryptData(byte[] encryptedData, string key, string iv)
{
using (RijndaelManaged rijndael = new RijndaelManaged())
{
rijndael.Key = Encoding.UTF8.GetBytes(key);
rijndael.IV = Encoding.UTF8.GetBytes(iv);
ICryptoTransform decryptor = rijndael.CreateDecryptor(rijndael.Key, rijndael.IV);
using (MemoryStream ms = new MemoryStream(encryptedData))
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
using (StreamReader sr = new StreamReader(cs))
{
return sr.ReadToEnd();
}
}
}
}
}
}
在上面的示例中,我們定義了EncryptData和DecryptData兩個方法來分別進行數據的加密和解密。在Main方法中,我們演示了如何使用這兩個方法來加密和解密數據。請注意,需要提供一個密鑰和初始化向量(IV)來進行加密和解密操作。