.Net Core AES加密解密
时间: 2024-01-17 12:03:41 浏览: 144
好的,我可以为您提供关于在 .Net Core 中使用 AES 进行加密和解密的一些基本信息。
首先,您需要使用 .Net Core 内置的 System.Security.Cryptography 命名空间中的 Aes 类。以下是一个使用 AES 加密的示例:
```csharp
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public static byte[] EncryptStringToBytes_Aes(string plainText, byte[] key, byte[] iv)
{
if (plainText == null || plainText.Length <= 0)
throw new ArgumentNullException("plainText");
if (key == null || key.Length <= 0)
throw new ArgumentNullException("key");
if (iv == null || iv.Length <= 0)
throw new ArgumentNullException("key");
byte[] encrypted;
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = key;
aesAlg.IV = iv;
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
encrypted = msEncrypt.ToArray();
}
}
}
return encrypted;
}
```
在上述代码中,我们使用 Create 方法创建了一个 Aes 实例,并将其 Key 和 IV 属性设置为传递给该方法的参数。然后,我们使用 CreateEncryptor 方法创建一个加密器对象,并使用 MemoryStream、CryptoStream 和 StreamWriter 将明文字符串写入加密流中。
以下是一个使用 AES 解密的示例:
```csharp
public static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] key, byte[] iv)
{
if (cipherText == null || cipherText.Length <= 0)
throw new ArgumentNullException("cipherText");
if (key == null || key.Length <= 0)
throw new ArgumentNullException("key");
if (iv == null || iv.Length <= 0)
throw new ArgumentNullException("key");
string plaintext = null;
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = key;
aesAlg.IV = iv;
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(cipherText))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
plaintext = srDecrypt.ReadToEnd();
}
}
}
}
return plaintext;
}
```
在上述代码中,我们使用 Create 方法创建了一个 Aes 实例,并将其 Key 和 IV 属性设置为传递给该方法的参数。然后,我们使用 CreateDecryptor 方法创建一个解密器对象,并使用 MemoryStream、CryptoStream 和 StreamReader 从加密流中读取明文字符串。
请注意,以上示例中的 Key 和 IV 参数应该是随机生成的,可以使用 RNGCryptoServiceProvider 类来生成。此外,还应该使用适当的加密模式和填充模式来保护您的数据。
希望这些信息能对您有所帮助!
阅读全文