using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public class DESCrypto
{
// DES加密方法
public static string Encrypt(string plainText, string key)
{
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
// 设置密钥和初始化向量(IV)
des.Key = Encoding.UTF8.GetBytes(key);
des.IV = Encoding.UTF8.GetBytes(key);
byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
}
}
}
// DES解密方法
public static string Decrypt(string cipherText, string key)
{
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
// 设置密钥和初始化向量(IV)
des.Key = Encoding.UTF8.GetBytes(key);
des.IV = Encoding.UTF8.GetBytes(key);
byte[] inputByteArray = Convert.FromBase64String(cipherText);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Encoding.UTF8.GetString(ms.ToArray());
}
}
}
}
}
// 示例用法
class Program
{
static void Main()
{
string original = "Here is some data to encrypt!";
string key = "12345678"; // DES密钥必须是8个字符
// 加密
string encrypted = DESCrypto.Encrypt(original, key);
Console.WriteLine("Encrypted: " + encrypted);
// 解密
string decrypted = DESCrypto.Decrypt(encrypted, key);
Console.WriteLine("Decrypted: " + decrypted);
}
}
DESCrypto 类包含了两个静态方法 Encrypt 和 Decrypt,用于对字符串进行 DES 加密和解密。Encoding.UTF8.GetBytes(key) 将密钥转换为字节数组。同样地,初始化向量(IV)也设置为与密钥相同的值。CryptoStream 使用 DES 加密器进行加密,最终将加密后的字节数组转换为 Base64 编码的字符串。CryptoStream 使用 DES 解密器进行解密,最终将解密后的字节数组转换为原始字符串。Main 方法中展示了如何使用 DESCrypto 类进行加密和解密操作。请注意,DES 是一种较旧的加密算法,安全性较低,建议在实际应用中使用更安全的加密算法如 AES。
下一篇:c# 求余数
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站