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 "";
}
}
标签:加密,Cryptography,c#,DES,解密,ms,new,byte,CryptoStream
From: https://www.cnblogs.com/f2825417199/p/18093066