C# aes加密算法实现
时间: 2024-06-11 14:02:50 浏览: 148
C#中的AES加密算法实现主要基于System.Security.Cryptography命名空间下的Aes类。它提供了两种模式,分别是CBC和ECB模式,其中CBC模式需要指定一个初始化向量(IV)。下面是一个简单的示例代码:
```csharp
using System;
using System.Security.Cryptography;
using System.Text;
public class AesEncryption
{
public static string Encrypt(string plainText, string key, string iv)
{
byte[] plainBytes = Encoding.UTF8.GetBytes(plainText);
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] ivBytes = Encoding.UTF8.GetBytes(iv);
using (Aes aes = Aes.Create())
{
aes.Key = keyBytes;
aes.IV = ivBytes;
aes.Mode = CipherMode.CBC;
ICryptoTransform encryptor = aes.CreateEncryptor();
byte[] encryptedBytes = encryptor.TransformFinalBlock(plainBytes, 0, plainBytes.Length);
string encryptedText = Convert.ToBase64String(encryptedBytes);
return encryptedText;
}
}
public static string Decrypt(string encryptedText, string key, string iv)
{
byte[] encryptedBytes = Convert.FromBase64String(encryptedText);
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] ivBytes = Encoding.UTF8.GetBytes(iv);
using (Aes aes = Aes.Create())
{
aes.Key = keyBytes;
aes.IV = ivBytes;
aes.Mode = CipherMode.CBC;
ICryptoTransform decryptor = aes.CreateDecryptor();
byte[] plainBytes = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);
string plainText = Encoding.UTF8.GetString(plainBytes);
return plainText;
}
}
}
```
在上面的代码中,我们通过调用Create()方法来创建一个Aes对象,并设置其Key、IV和Mode属性。然后我们使用CreateEncryptor()方法创建一个加密器对象,使用TransformFinalBlock()方法进行加密操作。解密操作则是使用CreateDecryptor()方法创建一个解密器对象,同样使用TransformFinalBlock()方法进行解密操作。
阅读全文