当前位置:首页 > 智能硬件 > 智能硬件
[导读][摘要] 本文详细介绍了DES数据加密算法的原理,并给出了一个例子演示了如何使用c#中的加密包进行DES算法加密,最后对DES进行了评价。[关键词] 加密 对称 非对称 DES 密钥 明文 密文从最初的保密通信发展到目前的网络信

[摘要] 本文详细介绍了DES数据加密算法的原理,并给出了一个例子演示了如何使用c#中的加密包进行DES算法加密,最后对DES进行了评价。

[关键词] 加密 对称 非对称 DES 密钥 明文 密文

从最初的保密通信发展到目前的网络信息加密,信息加密技术一直伴随着信息技术的发展而发展。作为计算机信息保护的最实用和最可靠的方法,信息加密技术被广泛应用到信息安全的各个领域。信息加密技术是一门涉及数学、密码学和计算机的交叉学科。现代密码学的发展,使信息加密技术已经不再依赖于对加密算法本身的保密,而是通过在统计学意义上提高破解的成本来提供高加密算法的安全性。

密码学是一门古老而又年轻的科学,它用于保护军事和外交通信,可追溯到几千年前。1976年Diffie和Hellman的“密码学的新方向”一文引发的密码学的一场革命,开创了公钥密码学的新纪元。

常用加密算法主要用来对敏感数据、摘要、签名等信息进行加密。按照密钥方式划分,可分为对称加密算法和非对称加密算法。

一、对称加密算法

对称加密算法有时又叫做传统密码算法,加密密钥可以从解密密钥中推导出来,解密密钥也可以从加密密钥中推导出来。在大多数的对称算法中,加密密钥和解密密钥是相同的,因此也成为秘密密钥算法或者单密钥算法。它要求发送发和接收方在安全通信之前先商定一个密钥。对称算法的安全性依赖于密钥,所以密钥的保密性对通信至关重要。对称加密算法主要有分组加密和流加密两类。分组加密是指将明文分成固定商都的组,用同一密钥分别对每一组加密,输出固定长度的密文,典型代表:DES、3DES、IDEA。

二、非对称加密算法

非对称加密算法有时又叫做公开密钥算法。其中用到两个密钥。一个是公共的,一个事私有的。一个密钥用于加密,另一个密钥用于解密。两个密钥不能够互相推导。常用的非对称加密算法有RSA公钥算法、Diffie-Hellman算法和ECC椭圆曲线密码。

我们详细分析一下DES加密算法的处理过程。

DES加密算法是分组加密算法,明文以64位为单位分成块。64位数据在64位密钥的控制下,经过初始变换后,进行16轮加密迭代:64位数据被分成左右两半部分,每部分32位,密钥与右半部分相结合,然后再与左半部分相结合,结果作为新的右半部分;结合前的右半部分作为新的左半部分。这一系列步骤组成一轮。这种轮换要重复16次。最后一轮之后,再进行初始置换的逆置换,就得到了64位的密文。

DES的加密过程可分为加密处理,加密变换和子密钥生成几个部分组成。

1.加密处理过程

(1)初始变换。加密处理首先要对64位的明文按表1所示的初始换位表IP进行变换。表中的数值表示输入位被置换后的新位置。例如输入的第58位,在输出的时候被置换到第1位;输入的是第7位,在输出时被置换到第64位。

(2)加密处理。上述换位处理的输出,中间要经过16轮加密变换。初始换位的64位的输出作为下一次的输入,将64位分为左、右两个32位,分别记为L0和R0,从L0、R0到L16、R16,共进行16轮加密变换。其中,经过n轮处理后的点左右32位分别为Ln和Rn,则可做如下定义

其中,kn是向第n轮输入的48位的子密钥,Ln-1和Rn-1分别是第n-1轮的输出,f是Mangler函数。

(3)最后换位。进行16轮的加密变换之后,将L16和R16合成64位的数据,再按照表2所示的

最后换位表进行IP-1的换位,得到64位的密文,这就是DES算法加密的结果。

2.加密变换过程

通过重复某些位将32位的右半部分按照扩展表3扩展换位表扩展为48位,而56位的密钥先移位然后通过选择其中的某些位减少至48位,48位的右半部分通过异或操作和48位的密钥结合,并分成6位的8个分组,通过8个S-盒将这48位替代成新的32位数据,再将其置换一次。这些S-盒输入6位,输出4位。S盒如表5所示。

一个S盒中具有4种替换表(行号用0、1、2、3表示),通过输入的6位的开头和末尾两位选定行,然后按选定的替换表将输入的6位的中间4位进行替代,例如:当向S1输入011011时,开头和结尾的组合是01,所以选中编号为1的替代表,根据中间4位1101,选定第13列,查找表中第1行第13列所示的值为5,即输出0101,这4位就是经过替代后的值。按此进行,输出32位,再按照表4 单纯换位表P进行变换,这样就完成了f(R,K)的变换,如图2所示。

3.子密钥生成过程

钥通常表示为64位的自然数,首先通过压缩换位PC-1去掉每个字节的第8位,用作奇偶校验,因此,密钥去掉第8、16、24……64位减至56位,所以实际密钥长度为56位,而每轮要生成48位的子密钥。

输入的64位密钥,首先通过压缩换位得到56位的密钥,每层分成两部分,上部分28位为C0,下部分为D0。C0和D0依次进行循环左移操作生成了C1和D1,将C1和D1合成56位,再通过压缩换位PC-2输出48位的子密钥K1,再将C1和D1进行循环左移和PC-2压缩换位,得到子密钥K2......以此类推,得到16个子密钥。密钥压缩换位表如表6所示。在产生子密钥的过程中,L1、L2、L9、L16是循环左移1位,其余都是左移2位,左移次数如表7所示。

4.解密处理过程

从密文到明文的解密过程可采用与加密完全相同的算法。不过解密要用加密的逆变换,就是把上面的最后换位表和初始换位表完全倒过来变换。这里不再赘述。

下面这个例子中演示了如何使用c#中的加密包进行DES算法加密,大家可以借助这个例子一窥DES加密的用法。

des_demo.cs代码如下

using System;
using System.Security.Cryptography;
using System.IO;
using System.Text;
public class EncryptStringDES {
 public static void Main(String[] args) {
 if (args.Length 1) {
 Console.WriteLine("Usage: des_demo
encrypt", args[0]);
 return;
 }
// 使用UTF8函数加密输入参数

UTF8Encoding utf8Encoding = new UTF8Encoding();
byte[] inputByteArray = utf8Encoding.GetBytes(args
[0].ToCharArray());

// 方式一:调用默认的DES实现方法

DES des = DES.Create();

// 方式二:直接使用DES_CSP()实现DES的实体

//DES_CSP DES = new DES_CSP();
// 初始化DES加密的密钥和一个随机的、8比特的初始化向量(IV)
Byte[] key = {0x01, 0x23, 0x45, 0x67, 0x89, 0xab,
0xcd, 0xef};
Byte[] IV = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab,
0xcd, 0xef};
des.Key = key;
des.IV = IV;
// 建立加密流
SymmetricStreamEncryptor sse = des.CreateEncryptor();
// 使用CryptoMemoryStream方法获取加密过程的输出
CryptoMemoryStream cms = new CryptoMemoryStream();
// 将SymmetricStreamEncryptor流中的加密数据输出到
CryptoMemoryStream中
sse.SetSink(cms);
// 加密完毕,将结果输出到控制台
sse.Write(inputByteArray);
sse.CloseStream();
// 获取加密数据
byte[] encryptedData = cms.Data;
// 输出加密后结果
Console.WriteLine("加密结果:");
for (int i = 0; i encryptedData.Length; i++) {
Console.Write("{0:X2} ",encryptedData[i]);
}
Console.WriteLine();
//上面演示了如何进行加密,下面演示如何进行解密
SymmetricStreamDecryptor ssd = des.CreateDecryptor();
cms = new CryptoMemoryStream();
ssd.SetSink(cms);
ssd.Write(encryptedData);
ssd.CloseStream();
byte[] decryptedData = cms.Data;
char[] decryptedCharArray = utf8Encoding.GetChars(decryptedData);
Console.WriteLine("解密后数据:");
Console.Write(decryptedCharArray);
Console.WriteLine(); }
}
编译:
D:“csharpcsc des_demo.cs
Microsoft (R) C# Compiler Version 7.00.8905 [NGWS runtime
2000.14.1812.10]
Copyright (C) Microsoft Corp 2000. All rights reserved.
运行实例:
D:“csharpdes_demo.exe 使用C#编写DES加密程序的framework
加密结果:
3D 22 64 C6 57 D1 C4 C3 CF 77 CE 2F D0 E1 78 2A 4D ED 7A A8
83 F9 0E 14 E1 BA 38
7B 06 41 8D B5 E9 3F 00 0D C3 28 D1 F9 6D 17 4B 6E A7 41 68
40
解密后数据

使用C#编写DES加密程序的

DES算法具有极高的安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。通过穷尽搜索空间,可获得总共256(大约7.2×1016)个可能的密钥。如果每秒能检测一百万个的话,需要2000年完成检测。可见,这是很难实现的。当然,随着科学技术的发展,当出现超高速计算机后,可以考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。随着信息化和数字化社会的发展,随着计算机和Inte rnet的普及,密码学必将在国家安全、经济交流、网络安全及人民生活等方面发挥更大作用。

参考文献

[1]叶忠杰:计算机网络安全技术(第二版).科学出版社

王宝会王大印等:新世纪计算机信息安全教程.电子工业出版社

张基温:信息系统安全原理.中国水利水电出版社

顾巧论蔡振山贾春福:计算机网络安全.科学出版社

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

上海2024年10月28日 /美通社/ -- 全球电子设计与制造服务供货商USI环旭电子,携手合作伙伴及Intel,共同研发出基于Intel Birch Stream服务器平台的OCP DC-MHS 2U云端服务器系统,...

关键字: Intel STREAM 电子 云端服务器

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

北京2023年1月4日 /美通社/ -- 当2023年洒下第一缕阳光,您是否与我们一样,都对这个美好的开始,倾注了太多的期待。刚刚过去的2022年充满了不确定性,生活与财富都经历了种种纷扰。但2022年最终只成...

关键字: 解密 BSP APP 路线图

北京2022年10月12日 /美通社/ -- CE Innovation Capital ("CEiC") 近日宣布完成对美国人力SaaS平台Workstream的投资。此次公司B+轮融资金额为6千万...

关键字: SAAS STREAM WORKS IC

俄罗斯天然气工业股份公司(Gazprom)周二警告称,由于一场法律纠纷,途经乌克兰的天然气供应面临风险。如果这些项目停止,西欧的供应将被切断,只剩下向土耳其以及一些南欧和南欧国家输送天然气的TurkStream管道。本周...

关键字: 天然气 ROM STREAM

以下内容中,小编将对CPU的相关内容进行着重介绍和阐述,希望本文能帮您增进对CPU的了解,和小编一起来看看吧。

关键字: CPU 超线程技术 加密算法

北京2022年6月17日 /美通社/ -- 近期,IBM大中华区总经理陈旭东接受资深科技记者李佳师专访,报道原文如下: 今年三月,当IBM宣布由陈旭东出任大中华区总经理时,...

关键字: IBM 解密 AI 互联网

(全球TMT2022年6月17日讯)近期,IBM大中华区总经理陈旭东接受资深科技记者李佳师专访,报道原文如下: 今年三月,当IBM宣布由陈旭东出任大中华区总经理时,至少引发外界三大疑问:第一,履历背景为联想集团中...

关键字: IBM 解密 AI 互联网

上海2022年5月12日 /美通社/ -- 医疗制药行业与人民的健康生活息息相关。随着我国人均寿命提升以及老龄化加剧,人们对健康检查和治疗的需求将会持续增加。一方面,我国老年人口规模庞大,人口老龄化程度持续加深...

关键字: 解密 真空泵 防护 过滤器

在下述的内容中,小编将会对智能卡的相关消息予以报道,如果智能卡是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。

关键字: 智能卡 加密算法 接触式IC
关闭