c#使用System.Security.Cryptography实现DES算法加密和解密
c#使用System.Security.Cryptography实现DES算法加密和解密
在加密过程中,通常会将原始数据转换为字节数组,然后对其进行加密。而在解密过程中,需要将加密后的数据解密为原始字节数组,然后进行相应的处理。
//解密读取
public static string Decrypt(string data)
{
try
{
byte[] key = Encoding.UTF8.GetBytes("12345678");//密钥
byte[] iv = Encoding.UTF8.GetBytes("12345678");//IV主要是加密的时候加入到明文中。防止出现同一个明文的密文相同的情况
byte[] dataByte
try
{
dataByte = Convert.FromBase64String(data);//Base64 编码的字符串 data 解码为对 应的字节数组
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
//创建一个DESCryptoServiceProvider加密算法实例,利用CreateDecryptor方法来创建解密器
DESCryptoServiceProvider cp = new DESCryptoServiceProvider();
//利用dataByte字节数组转化为MemoryStream数据流
MemoryStream ms = new MemoryStream(dataByte);
//ms:流 2.解码器 3.模式
CryptoStream cs = new CryptoStream(ms, cp.CreateDecryptor(key, iv), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
return sr.ReadToEnd();
}
catch (Exception ex)
{
return "";
}
}
//加密
public static string Encryption(string data)
{
try
{
byte[] key = ASCIIEncoding.ASCII.GetBytes("12345678");
byte[] iv = ASCIIEncoding.ASCII.GetBytes("12345678");
using (DESCryptoServiceProvider cp = new DESCryptoServiceProvider())
{
M// 创建内存流
MemoryStream ms = new MemoryStream();
// 使用加密器创建 CryptoStream 对象
CryptoStream cs = new CryptoStream(ms, cp.CreateEncryptor(key, iv), CryptoStreamMode.Write);
// 创建 StreamWriter 对象,用于向 CryptoStream 中写入数据
StreamWriter sw = new StreamWriter(cs);
// 将要加密的数据写入 CryptoStream
sw.Write(data);
// 刷新 StreamWriter 缓冲区
sw.Flush();
// 刷新 CryptoStream 的最终块
cs.FlushFinalBlock();
// 刷新内存流
ms.Flush();
// 将加密后的数据转换为 Base64 字符串并返回
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}
}
catch (Exception ex)
{
return "";
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异