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 "";
    }
}
posted @   士多PL  阅读(459)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示