.NET AES 加密 简介 AES(Advanced Encryption Standard)是一种对称加密算法,被广泛应用于数据加密和保护领域。在 .NET 平台上,可以使用 System.Security.Cryptography 命名空间中的 Aes 类来实现 AES
.NET AES 加密
简介
AES(Advanced Encryption Standard)是一种对称加密算法,被广泛应用于数据加密和保护领域。在 .NET 平台上,可以使用 System.Security.Cryptography 命名空间中的 Aes 类来实现 AES 加密。
本文将介绍如何使用 .NET 中的 Aes 类进行 AES 加密,并提供代码示例。
AES 加密算法
AES 是一个块加密算法,用于在块大小为 128 位(16 字节)的数据块上执行加密和解密操作。它支持三种不同的密钥长度:128 位、192 位和 256 位。
AES 加密算法的核心是多次重复的轮函数,每一轮都包括字节替换、行位移、列混淆和轮密钥添加等步骤。这些步骤的组合使得 AES 具有较高的安全性和性能。
.NET 中的 AES 加密
在 .NET 中,可以使用 System.Security.Cryptography 命名空间中的 Aes 类来实现 AES 加密。以下是一个使用 AES 加密的简单示例:
using System;
using System.Security.Cryptography;
using System.Text;
public class AesEncryptionExample
{
public static void Main(string[] args)
{
string plainText = "Hello, AES!";
byte[] key = Encoding.UTF8.GetBytes("0123456789ABCDEF");
byte[] iv = Encoding.UTF8.GetBytes("FEDCBA9876543210");
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
byte[] encryptedBytes = EncryptStringToBytes_Aes(plainText, aes.Key, aes.IV);
string encryptedText = Convert.ToBase64String(encryptedBytes);
Console.WriteLine("Encrypted Text: " + encryptedText);
string decryptedText = DecryptStringFromBytes_Aes(encryptedBytes, aes.Key, aes.IV);
Console.WriteLine("Decrypted Text: " + decryptedText);
}
}
static byte[] EncryptStringToBytes_Aes(string plainText, byte[] key, byte[] iv)
{
byte[] encrypted;
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
using (var ms = new System.IO.MemoryStream())
using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
cs.Write(plainTextBytes, 0, plainTextBytes.Length);
cs.Close();
encrypted = ms.ToArray();
}
}
return encrypted;
}
static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] key, byte[] iv)
{
string decrypted;
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (var ms = new System.IO.MemoryStream())
using (var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Write))
{
cs.Write(cipherText, 0, cipherText.Length);
cs.Close();
decrypted = Encoding.UTF8.GetString(ms.ToArray());
}
}
return decrypted;
}
}
在上面的示例中,我们使用了 Aes.Create() 方法来创建一个 Aes 实例,并设置了密钥和初始化向量(IV)。然后,我们使用 EncryptStringToBytes_Aes 方法对明文进行加密,并使用 DecryptStringFromBytes_Aes 方法对密文进行解密。
请注意,在实际应用中,密钥和初始化向量应该具有足够的随机性和安全性。这里的示例使用了固定的字符串来简化说明,但在实际应用中,应该使用更加安全的方法来生成密钥和初始化向量,例如使用随机数生成器。
结论
本文介绍了如何在 .NET 平台上使用 Aes 类进行 AES 加密。我们提供了一个简单的示例代码,并解释了 AES 加密算法的基本原理。希望本文能帮助您理解和应用 AES 加密算法。