• C# DES


    using System;
    //这个是使用DES的基础
    using System.Security.Cryptography;
    //这个是处理文字编码的前提
    using System.Text;
    //以“流”的形式处理文字,也是微软DES算法要求的
    using System.IO;
    /// <summary>
    /// DES加密方法
    /// </summary>
    /// <param name="strPlain">明文</param>
    /// <param name="strDESKey">密钥</param>
    /// <param name="strDESIV">向量</param>
    /// <returns>密文</returns>
    public string DESEncrypt(string strPlain,string strDESKey,string strDESIV)
    {
    //把密钥转换成字节数组
    byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey);
    //把向量转换成字节数组
    byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV);
    //声明1个新的DES对象
    DESCryptoServiceProvider desEncrypt=new DESCryptoServiceProvider();
    //开辟一块内存流
    MemoryStream msEncrypt=new MemoryStream();
    //把内存流对象包装成加密流对象
    CryptoStream csEncrypt=new CryptoStream(msEncrypt,desEncrypt.CreateEncryptor(bytesDESKey,bytesDESIV),CryptoStreamMode.Write);
    //把加密流对象包装成写入流对象
    StreamWriter swEncrypt=new StreamWriter(csEncrypt);
    //写入流对象写入明文
    swEncrypt.WriteLine(strPlain);
    //写入流关闭
    swEncrypt.Close();
    //加密流关闭
    csEncrypt.Close();
    //把内存流转换成字节数组,内存流现在已经是密文了
    byte[] bytesCipher=msEncrypt.ToArray();
    //内存流关闭
    msEncrypt.Close();
    //把密文字节数组转换为字符串,并返回
    return UnicodeEncoding.Unicode.GetString(bytesCipher);
    }
    /// <summary>
    /// DES解密方法
    /// </summary>
    /// <param name="strCipher">密文</param>
    /// <param name="strDESKey">密钥</param>
    /// <param name="strDESIV">向量</param>
    /// <returns>明文</returns>
    public string DESDecrypt(string strCipher,string strDESKey,string strDESIV)
    {
    //把密钥转换成字节数组
    byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey);
    //把向量转换成字节数组
    byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV);
    //把密文转换成字节数组
    byte[] bytesCipher=UnicodeEncoding.Unicode.GetBytes(strCipher);
    //声明1个新的DES对象
    DESCryptoServiceProvider desDecrypt=new DESCryptoServiceProvider();
    //开辟一块内存流,并存放密文字节数组
    MemoryStream msDecrypt=new MemoryStream(bytesCipher);
    //把内存流对象包装成解密流对象
    CryptoStream csDecrypt=new CryptoStream(msDecrypt,desDecrypt.CreateDecryptor(bytesDESKey,bytesDESIV),CryptoStreamMode.Read);
    //把解密流对象包装成读出流对象
    StreamReader srDecrypt=new StreamReader(csDecrypt);
    //明文=读出流的读出内容
    string strPlainText=srDecrypt.ReadLine();
    //读出流关闭
    srDecrypt.Close();
    //解密流关闭
    csDecrypt.Close();
    //内存流关闭
    msDecrypt.Close();
    //返回明文
    return strPlainText;
    }
  • 相关阅读:
    Windows下使用CMake编译SuiteSparse成VS工程
    【设计模式
    【设计模式
    vue过滤和复杂过滤
    el-tooltip 自定义样式
    el-table加表单验证
    使用Go env命令设置Go的环境
    面试官:GET 和 POST 两种基本请求方法有什么区别?
    解决 Vue 重复点击相同路由报错的问题
    利用promise和装饰器封装一个缓存api请求的装饰器工具
  • 原文地址:https://www.cnblogs.com/mokliu/p/2138922.html
Copyright © 2020-2023  润新知