在C#中使用OpenSSL進行數據加密,你可以使用OpenSSL的C#綁定庫,如OpenSSL.NET。以下是一個使用OpenSSL.NET進行AES加密和解密的示例:
首先,你需要安裝OpenSSL.NET庫。你可以通過NuGet包管理器來安裝:
Install-Package OpenSSL.NET
然后,你可以使用以下代碼進行AES加密和解密:
using System;
using OpenSSL.Core;
using OpenSSL.PKey;
using OpenSSL.Cipher;
class Program
{
static void Main()
{
string plaintext = "Hello, World!";
string key = "abcdefghijklmnop"; // AES-128 key
string iv = "abcdefghijklmnop"; // AES-128 IV
// Encrypt
byte[] encrypted = Encrypt(plaintext, key, iv);
Console.WriteLine("Encrypted: " + Convert.ToBase64String(encrypted));
// Decrypt
byte[] decrypted = Decrypt(encrypted, key, iv);
Console.WriteLine("Decrypted: " + Encoding.UTF8.GetString(decrypted));
}
static byte[] Encrypt(string plaintext, string key, string iv)
{
using (var rsa = new RSA())
{
rsa.LoadKey(key, out _);
using (var aes = Cipher.CreateAes(CipherMode.CBC, CipherPadding.PKCS7))
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = Encoding.UTF8.GetBytes(iv);
using (var encryptor = aes.CreateEncryptor())
{
return encryptor.TransformFinalBlock(Encoding.UTF8.GetBytes(plaintext), 0, plaintext.Length);
}
}
}
}
static byte[] Decrypt(byte[] ciphertext, string key, string iv)
{
using (var rsa = new RSA())
{
rsa.LoadKey(key, out _);
using (var aes = Cipher.CreateAes(CipherMode.CBC, CipherPadding.PKCS7))
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = Encoding.UTF8.GetBytes(iv);
using (var decryptor = aes.CreateDecryptor())
{
return decryptor.TransformFinalBlock(ciphertext, 0, ciphertext.Length);
}
}
}
}
}
注意:這個示例使用了RSA來加載密鑰和初始化向量(IV),因為AES密鑰通常較短,不適合直接存儲在代碼中。在實際應用中,你可能需要使用更安全的方式來存儲和管理密鑰和IV,如使用環境變量或密鑰管理系統。
另外,這個示例僅用于演示目的,實際應用中你可能需要考慮更多的安全因素,如填充方案的選擇、密鑰的生成和管理等。
還要注意,OpenSSL.NET庫的使用方式可能會隨著版本的更新而發生變化,因此建議查閱最新的文檔以獲取準確的信息。