1、创建类DES
添加引用:
using System.IO;
using System.Security.Cryptography;
2、
/// <summary>
/// DES加密解密
/// </summary>
public class DES
{
static string encryptKey = "Oyea";//定义密钥
#region 加密字符串
/// <summary>
/// 加密字符串
/// </summary>
/// <param name="str">要加密的字符串</param>
/// <returns>加密后的字符串</returns>
public static string Encrypt(string str)
{
DESCryptoServiceProvider descsp = new DESCryptoServiceProvider();//实例化加/解密类对象
byte[] key = Encoding.Unicode.GetBytes(encryptKey);//定义字节数组,用来存储密钥
byte[] data = Encoding.Unicode.GetBytes(str);//定义字节数组,用来存储要加密的字符串
MemoryStream MStream = new MemoryStream();//实例化内存流对象
//使用内存流实例化加密流对象
CryptoStream CStream = new CryptoStream(MStream, descsp.CreateEncryptor(key, key), CryptoStreamMode.Write);
CStream.Write(data, 0, data.Length);//向加密流中写入数据
CStream.FlushFinalBlock();//释放加密流
return Convert.ToBase64String(MStream.ToArray());//返回加密后的字符串
}
#endregion
#region 解密字符串
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str">要解密的字符串</param>
/// <returns>解密后的字符串</returns>
public static string Decrypt(string str)
{
DESCryptoServiceProvider descsp = new DESCryptoServiceProvider();//实例化加/解密对象
byte[] key = Encoding.Unicode.GetBytes(encryptKey);//定义字节数组,用来存储密钥
byte[] data = Convert.FromBase64String(str);//定义字节数组,用来存储要解密的字符串
MemoryStream MStream = new MemoryStream();//实例化内存流对象
//使用内存流实例化解密流对象
CryptoStream CStream = new CryptoStream(MStream, descsp.CreateDecryptor(key, key), CryptoStreamMode.Write);
CStream.Write(data, 0, data.Length);//向解密流中写入数据
CStream.FlushFinalBlock();//释放解密流
return Encoding.Unicode.GetString(MStream.ToArray());//返回解密后的字符串
}
#endregion
}
3、在Program.cs中使用
//测试自定义类DEScrypt
Console.WriteLine("请输入要加密的字符串:");
string strOld = Console.ReadLine();
string strNew = DES.Encrypt(strOld);
Console.WriteLine("加密后的字符串:{0}",strNew);
Console.WriteLine($"解密后的字符串:{DES.Decrypt(strNew)}");
Console.ReadKey();
结果如图: