数据加密标准
数据加密标准使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。数据加密标准使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。
数据加密原理与实现方法,说了这么多,现在来了解一下它吧!
数据加密标准(DES,Data Encryption Standard)是一种使用密钥加密的块密码,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。推动了现代的块密码及其密码分析的发展。
数据加密标准的由来
为了建立适用于计算机系统的商用密码,美国商业部的国家标准局NBS于1973年5月和1974年8月两次发布通告,向社会征求密码算法。在征得的算法中,由IBM公司提出的算法lucifer中选。1975年3月,NBS向社会公布了此算法,以求得公众的评论。于1976年11月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(American National Standard INStitute,ANSI) 承认。1977年1月以数据加密标准DES(Data Encryption Standard)的名称正式向社会公布。
无论是网络传输中使用的安全传输协议,还是安全手段或安全措施,它们都需要使用加密算法和相应的解密算法。不了解与此相关的加密原理和算法,就很难深刻地认识各种安全传输协议,以及实现网络安全所采用的数字凭证、数字签名等技术,所以我们在本节集中介绍一下。
基本概念
加密方法属于计算机密码学范畴。长久以来,计算机密码学作为一门研究计算机数据加密、解密及其变换的艰深的学科,鲜为普通用户所了解。过去只有间谍及军事人员对加密技术感兴趣,并投入了大量人力、物力和财力进行秘密研究。直到最近十几年,随着计算机网络及通信技术的民用化发展,尤其是商业和金融事务的介入,密码学的研究才得到了前所未有的广泛重视。密码学涉及到很多高深的数学理论,很难在一节内容中进行比较全面的论述。这里我们仅介绍一些基础知识,让读者了解网络信息加密及数字签名、数字凭证的实现原理,并对常用加密方法的优缺点有一些基本认识。
所谓加密,就是把数据信息即明文转换为不可辨识的形式即密文的过程,目的是使不应了解该数据信息的人不能够知道和识别。将密文转变为明文的过程就是解密。加密和解密过程形成加密系统,明文与密文统称为报文。任何加密系统,不论形式如何复杂,实现的算法如何不同,但其基本组成部分是相同的,通常都包括如下4个部分:
(1) 需要加密的报文,也称为明文;
(2) 加密以后形成的报文,也称为密文;
(3) 加密、解密的装置或算法;
(4) 用于加密和解密的钥匙,称为密钥。密钥可以是数字、词汇或者语句。
报文加密后,发送方就要将密文通过通信渠道传输给接收方。传输过程中,即密文在通信渠道传输过程中是不安全的,可能被非法用户即第三方截取和窃听,但由于是密文,只要第三方没有密钥,只能得到一些无法理解其真实意义的密文信息,从而达到保密的目的。
数据加密标准的算法
1、64bit 密钥K 经变换KS 产生16 个48bit 的子密钥K1、K2…K16,分别供16 次迭代使用;
2、64bit 明文段经初始置换IP得到64bit 数据组,左32bit 构成L0,右32bit 构成R0;
3、由加密函数f 实现子密钥Ki 对Ri-1 的加密变换和Li=Ri-1,Ri=Li-1 f(Ri-1,Ki)的迭代变换,迭代过程连续16 次;(其中称作按位模2 加运算)
4、由Rl6 为前32bit,Ll6 为后32bit 组成的64bit 数据组,经逆初- 2 -始置换IP-1 得密文;
5、脱密的算法相同,只是子密钥使用次序颠倒,K16 在第一次使用,K1 在最后一次使用。
加密与解密过程
长久以来,人们发明了各种各样的加密方法,为便于研究,通常把这些方法分为传统加密方法和现代加密方法两大类。前者的共同特点是采用单钥技术,即加密和解密过程中使用同一密钥,所以它也称为对称式加密方法;而后者的共同特点是采用双钥技术,也就是加密和解密过程中使用两个不同的密钥,它也称为非对称式加密方法。下面就简单介绍一下这些加密方法。
基于单钥技术的传统加密方法
这类方法主要包括代码加密法、替换加密法、变位加密法和一次性密码簿加密法等。
(1) 代码加密法。通信双方使用预先设定的一组代码表达特定的意义,而实现的一种最简单的加密方法。代码可以是日常词汇、专用名词,也可以是某些特殊用语。例如:
密文:姥姥家的黄狗三天后下崽。
明文:县城鬼子三天后出城扫荡。
这种方法简单好用,但通常一次只能传送一组预先约定的信息,而且重复使用时是不安全的,因为那样的话窃密者会逐渐明白代码含义。
(2) 替换加密法。这种方法是制定一种规则,将明文中的每个字母或每组字母替换成另一个或一组字母。例如,下面的这组字母对应关系就构成了一个替换加密器:
明文字母:A B C D E F……
密文字母:K U P S W B……
虽然说替换加密法比代码加密法应用的范围要广,但使用得多了,窃密者就可以从多次搜集的密文中发现其中的规律,破解加密方法。
(3) 变位加密法。与前两种加密方法不同,变位加密法不隐藏原来明文的字符,而是将字符重新排序。比如,加密方首先选择一个用数字表示的密钥,写成一行,然后把明文逐行写在数字下。按照密钥中数字指示的顺序,将原文重新抄写,就形成密文。例如:
密钥:6835490271
明文:小赵拿走黑皮包交给李[next]
密文:包李交拿黑走小给赵皮
(4) 一次性密码簿加密法。这种方法要先制定出一个密码薄,该薄每一页都是不同的代码表。加密时,使用一页上的代码加密一些词,用后撕掉或烧毁该页;然后再用另一页上的代码加密另一些词,直到全部的明文都加密成为密文。破译密文的唯一办法就是获得一份相同的密码簿。
计算机出现以后,密码簿就无需使用纸张而使用计算机和一系列数字来制作。加密时,根据密码簿里的数字对报文中的字母进行移位操作或进行按位的异或计算,以加密报文。解密时,接收方需要根据持有的密码簿,将密文的字母反向移位,或再次作异或计算,以求出明文。
数论中的“异或”规则是这样的:1^1=0,0^0=0;1^0=1,0^1=1。下面就是一个按位进行异或计算的加密和解密实例:
加密过程中明文与密码按位异或计算,求出密文:
明文:101101011011
密码:011010101001
密文:110111110010
解密过程中密文与密码按位异或计算,求出明文:
密文:110111110010
密码:011010101001
对于本章知识点,大家都有所了解了吗?若有不足的地方,欢迎补充呐,虚心请教。想要学习更多知识点,就来课课家,小编带你在知识的海洋里遨游!