使用DES算法实现加密解密

我们常见的加密算法有DES、MD5、IDEA、AES等等,这篇随笔介绍使用DES算法实现加密解密

首先介绍一下DES算法:

DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。 明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。

DES算法基本原理:

其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。

附上常用的DES算法加密解密类:

 1 using System;
 2 using System.IO;
 3 using System.Security.Cryptography;
 4 using System.Text;
 5
 6 namespace CodeFirst.Common
 7 {
 8     public class Encryption
 9     {
10         /// <summary>
11         /// 加密
12         /// </summary>
13         /// <param name="inputString">加密的字符串</param>
14         /// <returns></returns>
15         public static string DesEncrypt(string inputString)
16         {
17             return DesEncrypt(inputString, Key);
18         }
19         /// <summary>
20         /// 解密
21         /// </summary>
22         /// <param name="inputString">解密的字符串</param>
23         /// <returns></returns>
24         public static string DesDecrypt(string inputString)
25         {
26             return DesDecrypt(inputString, Key);
27         }
28         /// <summary>
29         /// 密匙
30         /// </summary>
31         public static string Key
32         {
33             get
34             {
35                 return "hongye10";
36             }
37         }
38         /// <summary>
39         /// 加密字符串
40         /// 注意:密钥必须为8位
41         /// </summary>
42         /// <param name="strText">字符串</param>
43         /// <param name="encryptKey">密钥</param>
44         /// <param name="encryptKey">返回加密后的字符串</param>
45         public static string DesEncrypt(string inputString, string encryptKey)
46         {
47             byte[] byKey = null;
48             byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
49             try
50             {
51                 byKey = System.Text.Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
52                 DESCryptoServiceProvider des = new DESCryptoServiceProvider();//加密服务提供者类
53                 byte[] inputByteArray = Encoding.UTF8.GetBytes(inputString);
54                 MemoryStream ms = new MemoryStream();//内存流
55                 //将数据流连接到加密转换的流
56                 CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);
57                 cs.Write(inputByteArray, 0, inputByteArray.Length);
58                 cs.FlushFinalBlock();
59                 return Convert.ToBase64String(ms.ToArray());
60             }
61             catch (System.Exception error)
62             {
63                 //return error.Message;
64                 return null;
65             }
66         }
67         /// <summary>
68         /// 解密字符串
69         /// </summary>
70         /// <param name="this.inputString">加了密的字符串</param>
71         /// <param name="decryptKey">密钥</param>
72         /// <param name="decryptKey">返回解密后的字符串</param>
73         public static string DesDecrypt(string inputString, string decryptKey)
74         {
75             byte[] byKey = null;
76             byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
77             byte[] inputByteArray = new Byte[inputString.Length];
78             try
79             {
80                 byKey = System.Text.Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
81                 DESCryptoServiceProvider des = new DESCryptoServiceProvider();
82                 inputByteArray = Convert.FromBase64String(inputString);
83                 MemoryStream ms = new MemoryStream();
84                 CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);
85                 cs.Write(inputByteArray, 0, inputByteArray.Length);
86                 cs.FlushFinalBlock();
87                 System.Text.Encoding encoding = new System.Text.UTF8Encoding();
88                 return encoding.GetString(ms.ToArray());
89             }
90             catch (System.Exception error)
91             {
92                 //return error.Message;
93                 return null;
94             }
95         }
96     }
97 }

End!

转载于:https://www.cnblogs.com/gygg/p/11274696.html

使用DES算法实现加密解密相关推荐

  1. c++国密算法SM2加密解密demo

    c++国密算法SM2加密解密 一.代码 一.代码 封装加密.解密接口: 加密接口: Encrpt_SM2() 解密接口:Decrypt_SM2() 加密解密结果可以和nodejs的模块sm-crypt ...

  2. RSA算法与加密解密

    RSA算法与加密解密 什么是RSA算法(RSA algorithm) 什么是非对称加密算法 RSA加密解密原理 算法攻击和蓝桥杯2018年省赛题目 RSA的小指数攻击 蓝桥杯2018年省赛题目 第一步 ...

  3. DES和RSA加密解密实例

    加密的应用 加密是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.数据加密技术已经广泛应用于因特网电子商务.手机网络和银行自 ...

  4. C#中使用DES和AES加密解密

    代码 using System; using System.Text; using System.Security.Cryptography; using System.IO; namespace M ...

  5. PB DES、3DES加密解密(简单便捷)

    PB DES\3DES加密解密 通过VDN的uo_vdncore组件快速简单实现PB的DES.3DES.AES.RSA.Base64.Hex.SHA.MD5.HMac等类型的加密解密,本章我们主要讲解 ...

  6. c语言 rsa算法 分段,python3 实现RSA算法分段加密解密

    参考博客地址: https://blog.csdn.net/qq_33414271/article/details/78424951 https://www.cnblogs.com/piperck/p ...

  7. .NET实现RSA算法的加密解密

    在项目中经常会使用到一些加密场合,涉及的加密算法常有RSA算法,base32算法,恰好最近有用到RSA加密解密算法,以此篇文章记录一下. RSA加密是一种非对称加密.可以在不直接传递密钥的情况下,完成 ...

  8. 国密算法SM2加密解密

    一.依赖包 <!-- hutool的 SM2 加密--><dependency><groupId>org.bouncycastle</groupId>& ...

  9. Des与3Des加密解密

    /// <summary>/// Des和3Des算法/// </summary>public class Des{/// <summary>/// Des加密// ...

最新文章

  1. Php和Mysql乱码问题
  2. Linux 终端配置
  3. 【NOI2013】向量内积【随机化】
  4. k8s核心技术-资源编排(yaml)的介绍---K8S_Google工作笔记0018
  5. 软工实践第一次作业-自我审视和规划
  6. java stream findlast_恕我直言你可能真的不会java第9篇-Stream元素的匹配与查找
  7. 六、 抽象类与接口对比
  8. python ascii转字符串_Python将混合ASCII代码转换为字符串
  9. vue 显示日期只显示年月_Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示...
  10. 浅谈大数据广告下个人隐私保护,开发者视角的广告原理
  11. rest api如何创建_我的宝宝走了一步,创建了一个REST API并进行了码头化
  12. CSS动画,风车案例
  13. 计算机网络——物理层和信道复用(频分、时分、码分)技术
  14. 微信直播的应用场景有哪些
  15. Clipper库中文文档(ClipperLib)
  16. 关于《那些年啊,那些事——一个程序员的奋斗史》——24提到的鼻炎治疗方法
  17. 安全培训总结-Https
  18. 学习freertos之点亮led入门(stm32c8t6)
  19. python高效办公
  20. 华为定制版手机如何解锁及获取ROOT权限

热门文章

  1. 工业数字智能化常用系统简介
  2. 算法初探系列3 -深度优先搜索之剪枝策略
  3. 车辆派遣管理系统第一周档案管理驾驶员信息管理
  4. 每日一题解(第二周)
  5. uniapp ios证书申请和上架全流程
  6. 7、Java四种进制及位运算介绍
  7. SQL:查询重复次数最多的名字和id
  8. [10minutes]百家姓
  9. PEKS关键词可搜索加密详解
  10. 利用MQTT协议实现Arduino与onenet测温湿度