在C#中,对变量进行加密和解密可以使用多种方法。这里,我们将使用对称加密算法AES(Advanced Encryption Standard)来实现这一目标。AES是一种广泛使用的加密标准,它提供了强大的安全性。
首先,你需要安装System.Security.Cryptography
命名空间中的Aes
类。你可以通过NuGet包管理器安装System.Security.Cryptography
包。
以下是一个简单的示例,展示了如何使用AES加密和解密字符串:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
class Program
{
static void Main()
{
string key = "your-secret-key"; // 用于加密和解密的密钥,长度应为16、24或32个字符
string iv = "your-initial-vector"; // 初始化向量,长度应为16个字符
string plaintext = "Hello, World!"; // 要加密的字符串
string encrypted = Encrypt(plaintext, key, iv);
string decrypted = Decrypt(encrypted, key, iv);
Console.WriteLine($"Plaintext: {plaintext}");
Console.WriteLine($"Encrypted: {encrypted}");
Console.WriteLine($"Decrypted: {decrypted}");
}
static string Encrypt(string plaintext, string key, string iv)
{
byte[] plainBytes = Encoding.UTF8.GetBytes(plaintext);
byte[] encryptedBytes = Encrypt(plainBytes, Encoding.UTF8.GetBytes(key), Encoding.UTF8.GetBytes(iv));
return Convert.ToBase64String(encryptedBytes);
}
static string Decrypt(string ciphertext, string key, string iv)
{
byte[] encryptedBytes = Convert.FromBase64String(ciphertext);
byte[] decryptedBytes = Decrypt(encryptedBytes, Encoding.UTF8.GetBytes(key), Encoding.UTF8.GetBytes(iv));
return Encoding.UTF8.GetString(decryptedBytes);
}
static byte[] Encrypt(byte[] plainBytes, byte[] key, byte[] iv)
{
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
cs.Write(plainBytes, 0, plainBytes.Length);
cs.Close();
}
return ms.ToArray();
}
}
}
static byte[] Decrypt(byte[] cipherBytes, byte[] key, byte[] iv)
{
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Write))
{
cs.Write(cipherBytes, 0, cipherBytes.Length);
cs.Close();
}
return ms.ToArray();
}
}
}
}
在这个示例中,我们首先创建了一个Aes
对象,并使用密钥和初始化向量对其进行配置。然后,我们使用Encrypt
方法将字符串转换为字节数组并加密,最后将加密后的字节数组转换回字符串。解密过程与加密过程相反。
请注意,你需要将your-secret-key
和your-initial-vector
替换为你自己的密钥和初始化向量。确保密钥和初始化向量的长度符合AES算法的要求(16、24或32个字符)。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。