C# AES 加密解密代码示例
C# 实现 AES 加密解密代码示例
这是一个使用 C# 实现 AES 加密的示例代码:
using System;
using System.Security.Cryptography;
using System.Text;
class Program
{
static void Main()
{
string plainText = 'Hello World!';
string key = '12345678901234567890123456789012';
string iv = '1234567890123456';
byte[] encryptedBytes = EncryptStringToBytes(plainText, key, iv);
string decryptedText = DecryptStringFromBytes(encryptedBytes, key, iv);
Console.WriteLine('Plain Text: ' + plainText);
Console.WriteLine('Encrypted Text: ' + Convert.ToBase64String(encryptedBytes));
Console.WriteLine('Decrypted Text: ' + decryptedText);
}
static byte[] EncryptStringToBytes(string plainText, string key, string iv)
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] ivBytes = Encoding.UTF8.GetBytes(iv);
using (Aes aes = Aes.Create())
{
aes.Key = keyBytes;
aes.IV = ivBytes;
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
cs.Write(plainTextBytes, 0, plainTextBytes.Length);
}
return ms.ToArray();
}
}
}
static string DecryptStringFromBytes(byte[] cipherText, string key, string iv)
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] ivBytes = Encoding.UTF8.GetBytes(iv);
using (Aes aes = Aes.Create())
{
aes.Key = keyBytes;
aes.IV = ivBytes;
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(cipherText))
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
byte[] decryptedBytes = new byte[cipherText.Length];
int decryptedByteCount = cs.Read(decryptedBytes, 0, decryptedBytes.Length);
return Encoding.UTF8.GetString(decryptedBytes, 0, decryptedByteCount);
}
}
}
}
}
在上述代码中,我们使用 Aes 类来创建 AES 加密算法对象,然后使用给定的密钥和初始向量 (IV) 对明文进行加密。加密和解密过程使用 CryptoStream 类来进行数据流的加密和解密操作。最后,我们将加密后的字节数组转换为 Base64 字符串进行输出。
相关概念:
- AES (Advanced Encryption Standard):高级加密标准,是一种对称分组密码算法。
- 密钥 (Key):用于加密和解密数据的秘密信息。
- 初始向量 (IV):用于增强加密算法的安全性,确保每次加密的结果都不同。
- CryptoStream:用于对数据流进行加密和解密操作的类。
注意事项:
- 密钥和 IV 应保密,避免泄露。
- 使用随机生成的密钥和 IV 可以提高安全性。
- 实际应用中,应根据具体需求选择合适的加密算法和参数。
更多信息:
原文地址: https://www.cveoy.top/t/topic/qhQW 著作权归作者所有。请勿转载和采集!