首页 > 其他分享 >DES加密解密

DES加密解密

时间:2023-10-09 15:58:45浏览次数:36  
标签:des 加密 MemoryStream DES 解密 DESCryptoServiceProvider return new CryptoStream

来源: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
    }
}

 

标签:des,加密,MemoryStream,DES,解密,DESCryptoServiceProvider,return,new,CryptoStream
From: https://www.cnblogs.com/xsj1989/p/17751943.html

相关文章

  • 如何修改Power BI Desktop界面语言为中文?
    今天有同事询问如何才能把英文版的PowerBIDesktop切换为中文。 修改方式有两种,请参考如下:1,直接安装中文版PowerBIDesktop ,请打开微软PowerBI官网下载页面,参考下面页面:DownloadPowerBIDesktopfromOfficialMicrosoftDownloadCenter选择语言‘Chin......
  • redis-cluster nodes命令信息说明
     集群定义1.1每个字段的含义如下:1.id:节点ID,一个40字节的随机字符串,节点创建时生成,且不会变化(除非使用CLUSTERRESETHARD命令)。2.ip:port:客户端访问的地址。3.flags:逗号分隔的标记位,可能值有:myself,master,slave,fail?,fail,handshake,noaddr,noflags......
  • SQLSugar中Includes和Mapper的区别
    在SQLSugar中,Include和Mapper确实在处理过滤器方面有一些不同的行为。Include方法:当你使用Include方法来加载关联实体时,SQLSugar会忽略过滤器,不会将过滤器应用于加载的关联实体。这意味着无论你是否定义了过滤器,使用Include方法加载的关联实体都会被加载,而不受过滤器的影响。......
  • 『PyQt5-Qt Designer篇』| 08 Qt Designer中容器布局和绝对布局的使用
    (08QtDesigner中容器布局和绝对布局的使用)1容器布局1.1设计容器布局先拖入一个容器Frame容器,然后拖入几个控件:把拖入的控件拖入容器中:选中容器,右键-布局-栅格布局:1.2保存文件并执行保存为test007_ConFra.ui,并生成test007_ConFra.py:#-*-coding:utf-8-*-#......
  • GO数组解密:从基础到高阶全解
    在本文中,我们深入探讨了Go语言中数组的各个方面。从基础概念、常规操作,到高级技巧和特殊操作,我们通过清晰的解释和具体的Go代码示例为读者提供了全面的指南。无论您是初学者还是经验丰富的开发者,这篇文章都将助您更深入地理解和掌握Go数组的实际应用。关注公众号【TechLeadClou......
  • GO数组解密:从基础到高阶全解
    在本文中,我们深入探讨了Go语言中数组的各个方面。从基础概念、常规操作,到高级技巧和特殊操作,我们通过清晰的解释和具体的Go代码示例为读者提供了全面的指南。无论您是初学者还是经验丰富的开发者,这篇文章都将助您更深入地理解和掌握Go数组的实际应用。关注公众号【TechLeadClo......
  • [BSidesCF 2020]Had a bad day
    原理文件包含liunx对不存在目录不敏感伪协议利用解题过程进入靶场可以看到两个按钮,点其中一个,会传递category参数,然后会出现随机图片,两个按钮的参数值不一样,查看页面原代码证实了这样的操作试试修改category值,发现只让有两个值其中一个那再修改参数值,发现涉及include函......
  • 对称加密和非对称加密
    1.对称加密所谓对称加密就是加密和解密用的是同一个秘钥.也称为共享密钥加密算法,是一种将明文加密成密文的加密算法。其特点是加密和解密使用相同的密钥,也就是说,密钥是公开的,双方通过协商得到同一个密钥,然后使用该密钥对明文进行加密和解密操作。对称加密算法的优点是算法简单......
  • destoon : 后台无法登录问题解决
    经常有朋友在destoon搬家的时候,数据还原之后,会出现后台无法登录的情况.具体表现为后台帐号密码输入后点击确定,页面刷新.并没有跳转到相应后台页面.但是如果帐号密码输入错误,会提示密码错误的情况.这种情况多半是原系统设置中,设置了cookie作用域的问题,如......
  • destoon注册会员关于邮箱可以重复以及不填写的操作方法
    首先要修改数据库中的destoon_member表中的email字段,因为之前的是:UNIQUEKEY`email`(`email`)因为这样所以插入数据库中的时候邮件就必须不能重复我们需要把改下数据表的属性,用以下语句进行修改:ALTERTABLEdestoon_member DROPINDEXemail;这样就取消了索引键然后我们......