.Net Core AES加密解密
时间: 2024-01-17 10:03:34 浏览: 29
好的,针对您的问题,我可以提供以下的代码示例来实现基于 .Net Core 的 AES 加密和解密。
加密:
```csharp
public static string Encrypt(string plainText, byte[] key, byte[] iv)
{
using var aes = Aes.Create();
aes.Key = key;
aes.IV = iv;
var encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
using var msEncrypt = new MemoryStream();
using var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);
using var swEncrypt = new StreamWriter(csEncrypt);
swEncrypt.Write(plainText);
return Convert.ToBase64String(msEncrypt.ToArray());
}
```
解密:
```csharp
public static string Decrypt(string cipherText, byte[] key, byte[] iv)
{
using var aes = Aes.Create();
aes.Key = key;
aes.IV = iv;
var decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using var msDecrypt = new MemoryStream(Convert.FromBase64String(cipherText));
using var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);
using var srDecrypt = new StreamReader(csDecrypt);
return srDecrypt.ReadToEnd();
}
```
其中,`plainText` 表示要加密的明文字符串,`key` 和 `iv` 分别表示 AES 加密算法中的密钥和向量。在加密和解密的过程中,我们需要使用 `Aes.Create()` 方法来创建一个 AES 实例,然后设置其 `Key` 和 `IV` 属性。接下来,我们需要使用 `CreateEncryptor()` 和 `CreateDecryptor()` 方法来分别创建加密器和解密器,最后通过 `CryptoStream` 和 `StreamWriter` 或 `StreamReader` 将明文或密文写入或读取。
需要注意的是,密钥和向量的长度需要根据所选的加密算法进行调整。在 AES 算法中,密钥长度可以为 128、192 或 256 位,向量长度为 128 位。同时,为了保证安全性,应该使用随机生成的密钥和向量,并妥善保管。