posts - 609,  comments - 13,  views - 64万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
来源:https://blog.csdn.net/Zhangchen9091/article/details/46278463
https://blog.51cto.com/cbcw/6289416
复制代码
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace ConsoleApp1
{
    public class DES3Util
    {
        public static String desKey = "BFYB_KEY";//
        public static String desIV = "BFYB_IIV";//向量
        /// <summary>
        /// DES加密
        /// </summary>
        /// <param name="originText"></param>
        /// <returns></returns>
        public static String desEncode(string originText)
        {
            byte[] tmpDesKey = Encoding.ASCII.GetBytes(desKey);
            byte[] tmpDesIV = Encoding.ASCII.GetBytes(desIV);
            DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();
            MemoryStream memStream = new MemoryStream();
            CryptoStream cryptoStream = new CryptoStream(memStream, desProvider.CreateEncryptor(tmpDesKey, tmpDesIV), CryptoStreamMode.Write);
            StreamWriter streamWriter = new StreamWriter(cryptoStream);
            streamWriter.Write(originText);
            streamWriter.Flush();
            cryptoStream.FlushFinalBlock();
            streamWriter.Flush();
            String retStr = Convert.ToBase64String(memStream.GetBuffer(), 0, (int)memStream.Length);

            return retStr;
        }
        /// <summary>
        /// DES解密
        /// </summary>
        /// <param name="originText"></param>
        /// <returns></returns>
        public static String desDecode(String originText)
        {
            byte[] tmpDesKey = System.Text.ASCIIEncoding.ASCII.GetBytes(desKey);
            byte[] tmpDesIV = System.Text.ASCIIEncoding.ASCII.GetBytes(desIV);
            //
            byte[] originBytes;
            try
            {
                originText.Replace("_%_", "/");
                originText.Replace("-%-", "#");
                originBytes = Convert.FromBase64String(originText);
            }
            catch (Exception exception)
            {
                return null;
            }
            DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();
            MemoryStream memStream = new MemoryStream(originBytes);
            CryptoStream cryptoStream = new CryptoStream(memStream, desProvider.CreateDecryptor(tmpDesKey, tmpDesIV), CryptoStreamMode.Read);
            StreamReader steamReader = new StreamReader(cryptoStream);
            String retString = steamReader.ReadToEnd();
            return retString;
        }
        //原文链接:https://blog.csdn.net/Zhangchen9091/article/details/46278463

        /// <summary> 
        /// DES加密字符串 
        /// </summary> 
        /// <param name="encryptString">待加密的字符串</param> 
        /// <param name="Key">密钥</param> 
        /// <returns>加密成功返回加密后的字符串,失败返回源串</returns> 
        public static string EncryptDES(string encryptString, string key)
        {
            try
            {
                byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                des.Key = Encoding.UTF8.GetBytes(key);
                des.Mode = CipherMode.ECB;
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, des.CreateEncryptor(), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                return Convert.ToBase64String(mStream.ToArray());
            }
            catch
            {
                return encryptString;
            }
        }

        /// <summary> 
        /// DES解密字符串 
        /// </summary> 
        /// <param name="decryptString">待解密的字符串</param> 
        /// <returns>解密成功返回解密后的字符串,失败返源串</returns> 
        public static string DecryptDES(string decryptString, string key)
        {
            try
            {
                byte[] inputByteArray = Convert.FromBase64String(decryptString);
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                des.Key = Encoding.UTF8.GetBytes(key);
                des.Mode = CipherMode.ECB;
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, des.CreateDecryptor(), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                return Encoding.UTF8.GetString(mStream.ToArray());
            }
            catch
            {
                return decryptString;
            }
        }
        //.Net DES加密解密(不带向量)
        //https://blog.51cto.com/cbcw/6289416
    }
}
复制代码

 

posted on   邢帅杰  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示