阅读量:0
在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库的使用方式可能会随着版本的更新而发生变化,因此建议查阅最新的文档以获取准确的信息。