C#8.0来一段DES加解密代码
时间: 2024-11-29 13:18:03 浏览: 4
C#的3DES加密解密算法实例代码
4星 · 用户满意度95%
在C# 8.0及以上版本中,可以使用`System.Security.Cryptography.DataProtection DES`库来进行数据加密和解密,特别是使用Data Protection API (DPAPI)。以下是一个基本的DES(Data Encryption Standard)加解密示例:
```csharp
using System;
using System.Security.Cryptography;
using System.Text;
public class DESExample
{
private const string DESKey = "MySecretKey123"; // 替换为实际密钥
private static DESCryptoServiceProvider desCryptoProvider = new DESCryptoServiceProvider();
public static void Encrypt(string plainText)
{
byte[] inputBytes = Encoding.UTF8.GetBytes(plainText);
byte[] keyBytes = Encoding.UTF8.GetBytes(DESKey);
// 使用提供的密钥初始化 DES 加密算法
desCryptoProvider.Key = keyBytes;
desCryptoProvider.IV = new byte[8]; // DES需要8字节的IV
using (ICryptoTransform encryptor = desCryptoProvider.CreateEncryptor())
{
byte[] encryptedBytes = encryptor.TransformFinalBlock(inputBytes, 0, inputBytes.Length);
// 将加密后的字节数组转换回字符串,并输出
string encryptedString = Convert.ToBase64String(encryptedBytes);
Console.WriteLine($"Encrypted Text: {encryptedString}");
}
}
public static string Decrypt(string encryptedText)
{
byte[] encryptedBytes = Convert.FromBase64String(encryptedText);
byte[] keyBytes = Encoding.UTF8.GetBytes(DESKey);
// 恢复相同的初始化向量和密钥
desCryptoProvider.Key = keyBytes;
desCryptoProvider.IV = new byte[8];
using (ICryptoTransform decryptor = desCryptoProvider.CreateDecryptor())
{
byte[] decryptedBytes = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);
string decryptedString = Encoding.UTF8.GetString(decryptedBytes);
return decryptedString;
}
}
public static void Main()
{
string plainText = "Hello, World!";
Encrypt(plainText); // 加密
string encrypted = Encrypt(plainText); // 虽然看起来一样,但这已经是另一个加密文本
string decrypted = Decrypt(encrypted); // 解密回原文
Console.WriteLine($"Decrypted Text: {decrypted}");
}
}
```
注意:DES是一种相对较弱的加密算法,现代应用通常更倾向于使用AES或其他更强的安全标准。
阅读全文