一、DES说明

1.加密的密钥必须是16位,因为是通过AES处理的Create,AES内置的位数为16位。

2.加密结果返回Base64字符格式

二、加密方法整理

  1. //默认密钥向量
  2. private static byte[] Keys = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F };
  3. /// <summary>
  4. /// DES加密字符串
  5. /// </summary>
  6. /// <param name="encryptString">待加密的字符串</param>
  7. /// <param name="encryptKey">加密密钥,要求为16位</param>
  8. /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
  9. public static string DESEncrypt(string encryptString, string encryptKey = "Key123Ace#321Key")
  10. {
  11. try
  12. {
  13. byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(, ));
  14. byte[] rgbIV = Keys;
  15. byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
  16. var DCSP = Aes.Create();
  17. MemoryStream mStream = new MemoryStream();
  18. CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
  19. cStream.Write(inputByteArray, , inputByteArray.Length);
  20. cStream.FlushFinalBlock();
  21. return Convert.ToBase64String(mStream.ToArray());
  22. }
  23. catch (Exception ex)
  24. {
  25. return ex.Message + encryptString;
  26. }
  27.  
  28. }
  29. /// <summary>
  30. /// DES解密字符串
  31. /// </summary>
  32. /// <param name="decryptString">待解密的字符串</param>
  33. /// <param name="decryptKey">解密密钥,要求为16位,和加密密钥相同</param>
  34. /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
  35. public static string DESDecrypt(string decryptString, string decryptKey = "Key123Ace#321Key")
  36. {
  37. try
  38. {
  39. byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(, ));
  40. byte[] rgbIV = Keys;
  41. byte[] inputByteArray = Convert.FromBase64String(decryptString);
  42. var DCSP = Aes.Create();
  43. MemoryStream mStream = new MemoryStream();
  44. CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
  45. Byte[] inputByteArrays = new byte[inputByteArray.Length];
  46. cStream.Write(inputByteArray, , inputByteArray.Length);
  47. cStream.FlushFinalBlock();
  48. return Encoding.UTF8.GetString(mStream.ToArray());
  49. }
  50. catch (Exception ex)
  51. {
  52. return ex.Message + decryptString;
  53. }
  54.  
  55. }

测试代码:

  1. //DES 测试
  2. string result1 = SecurityHelper.DESEncrypt("张三丰");
  3. Console.WriteLine(result1); //Wmp7NDhI5S/U/H0qf0YWBw==
  4.  
  5. string result2 = SecurityHelper.DESDecrypt(result1);
  6. Console.WriteLine(result2); //张三丰

更多:

.Net Core AES加密解密

.Net Core Base64加密解密

.Net Core Md5加密整理

.Net Core DES加密解密的更多相关文章

  1. .Net Core AES加密解密

    一.AES说明 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替 ...

  2. php使用openssl进行Rsa长数据加密(117)解密(128) 和 DES 加密解密

    PHP使用openssl进行Rsa加密,如果要加密的明文太长则会出错,解决方法:加密的时候117个字符加密一次,然后把所有的密文拼接成一个密文:解密的时候需要128个字符解密一下,然后拼接成数据. 加 ...

  3. des加密解密——java加密,php解密

    最近在做项目中,遇到des加密解密的问题. 场景是安卓app端用des加密,php这边需要解密.之前没有接触过des这种加密解密算法,但想着肯定会有demo.因此百度,搜了代码来用.网上代码也是鱼龙混 ...

  4. DES加密解密

    加密后生成Base64字符串,并去除'='字符. 加密后替换掉'+',这样加密后的字符串可以作为url参数传递. using System; using System.IO; using System ...

  5. 一个java的DES加密解密类转换成C#

    一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.P ...

  6. Golang之AES/DES加密解密

    AES/DES加密/解密涉及4个概念:1. Block, 也叫分组, 相应加密/解密的算法. 2. BlockMode, 模式, 相应加密/解密的处理.3. InitalVectory, 初始向量4. ...

  7. java 实现 DES加密 解密算法

    DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...

  8. 兼容PHP和Java的des加密解密代码分享

    这篇文章主要介绍了兼容PHP和Java的des加密解密代码分享,适合如服务器是JAVA语言编写,客户端是PHP编写,并需要des加密解密的情况,需要的朋友可以参考下 作为一个iOS工程师来解决安卓的问 ...

  9. php实现和c#一致的DES加密解密

    原文:php实现和c#一致的DES加密解密 php实现和c#一致的DES加密解密,可以从网上搜到一大堆,但是测试后发现都没法用.以下正确代码是我经过苦苦才找到的.希望大家在系统整合时能用的上. 注意: ...

随机推荐

  1. url传参中文乱码解决

    url传参request.setCharacterEncoding("utf-8");无法解决中文乱码问题 解决方法: 修改tomcat---conf----server.xml文 ...

  2. C#面向对象(继承的重载和构造函数)

    构造函数: 继承的重载:

  3. All about the “paper”

    博采众长吧,看到有用的就记下来,提醒自己,方便他人. 1.good idea. 写论文,good idea很重要 2.看论文. 网友经验:看论文学知识的效率远比看书要快的多,很多人在刚开始看论文的时候 ...

  4. &&(与),||(或),|,!(非)

    &&(与),||(或),|,!(非) 只能用于布尔值 //: object/test.java package object; import java.util.*; public c ...

  5. 性能测试二十四:环境部署之Redis多实例部署

    由于redis服务端是单线程实现的,因此只能占用CPU的单核,为了充分利用CPU资源,可以在一台服务器上同时启动多个redis-server实例 首先删除之前的rdb.aof文件 注释掉3个save ...

  6. ubuntu 12.04 安装 openssh-server 失败,请问怎么该弄?

    $ sudo apt-get install openssh-server Reading package lists... Done Building dependency tree Reading ...

  7. 安装ipython和jupyter

    本节内容: 安装ipython 安装jupyter Pycharm介绍 Python软件包管理 一.安装ipython 1. python的交互式环境   2. 安装ipython 可以使用pip命令 ...

  8. CentOS6.8安装RabbitMQ

    1.安装erlang 安装依赖包: yum install xmlto gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC ...

  9. canvas简单下雨特效

    前面做了两个简单的效果,这次就来个下雨的效果 思路简单的说一下 随机在屏幕中的位置画雨滴,moveTo(x,y) 雨滴的长度就是lineTo(x,y+len) 每次重新绘制页面,就能达到下雨的效果了 ...

  10. bzoj2654

    题解: 老早看的并没有写 wqs二分的原理和这个凸函数的性质已经证明过了 写的时候 主要的问题在于每次的答案是一个范围 什么意思呢 其实比较简单的做法是 优先取白边,优先取黑边做两次 然后看一下要求的 ...