.net core des加密
时间: 2023-09-03 16:15:37 浏览: 146
在 .NET Core 中使用 DES 加密可以使用 System.Security.Cryptography 命名空间下的 DESCryptoServiceProvider 类。以下是一个简单的示例:
```csharp
using System;
using System.Security.Cryptography;
using System.Text;
class Program
{
static void Main(string[] args)
{
string plaintext = "Hello World!";
string key = "thisisakey";
byte[] iv = new byte[8]; // 初始化向量必须是 8 个字节
byte[] encrypted = EncryptStringToBytes(plaintext, key, iv);
string decrypted = DecryptStringFromBytes(encrypted, key, iv);
Console.WriteLine($"Plaintext: {plaintext}");
Console.WriteLine($"Encrypted: {Convert.ToBase64String(encrypted)}");
Console.WriteLine($"Decrypted: {decrypted}");
}
static byte[] EncryptStringToBytes(string plaintext, string key, byte[] iv)
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
des.Key = keyBytes;
des.IV = iv;
using (var encryptor = des.CreateEncryptor())
{
return encryptor.TransformFinalBlock(plaintextBytes, 0, plaintextBytes.Length);
}
}
}
static string DecryptStringFromBytes(byte[] encrypted, string key, byte[] iv)
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
des.Key = keyBytes;
des.IV = iv;
using (var decryptor = des.CreateDecryptor())
{
byte[] decryptedBytes = decryptor.TransformFinalBlock(encrypted, 0, encrypted.Length);
return Encoding.UTF8.GetString(decryptedBytes);
}
}
}
}
```
在此示例中,我们使用一个 8 字节的初始化向量来初始化 DESCryptoServiceProvider。请注意,使用 DES 加密时,初始化向量必须是 8 个字节。我们使用 UTF-8 编码将明文和密钥转换为字节数组,然后使用 CreateEncryptor 和 CreateDecryptor 方法创建加密器和解密器。最后,我们使用 TransformFinalBlock 方法执行加密和解密操作,并将结果转换为字符串。
阅读全文