数据加密原理及方法 针对DES算法的分析 学院 专业 学号: 姓名: 摘要: 本文通过对数据加密原理及其方法的综合,着重分析DES算法的优点和缺陷,从而寻求更好的加密方式,向信息时代的高速保密需求迈进! In this paper, theory and method of data encryption, an integrated focus on analyzing the merits and shortcomings DES algorithm to find better encryption methods to the confidentiality of the information age, demand for high-speed ahead! I 关键字:DES算法 数据加密 密钥 ASE算法 DES data encryption algorithm key ASE Algorithm 引言:加密方法属于计算机密码学范畴。长久以来,计算机密码学作为一门研究计算机数据加密、解密及其变换的艰深的学科,鲜为普通用户所了解。过去只有间谍及军事人员对加密技术感兴趣,并投入了大量人力、物力和财力进行秘密研究。直到最近十几年,随着计算机网络及通信技术的民用化发展,尤其是商业和金融事务的介入,密码 学的研究才得到了前所未有的广泛重视。密码学涉及到很多高深的数学理论。需要了解数字签名、数字凭证的实现原理,并要求对常用加密方法的优缺点有一些基本认识。
所谓加密,就是把数据信息即明文转换为不可辨识的形式即密文的过程,目的是使不应了解该数据信息的人不能够知道和识别。将密文转变为明文的过程就是解密。加密和解密过程形成加密系统,明文与密文统称为报文。任何加密系统,不论形式如何复杂,实现的算法如何不同,但其基本组成部分是相同的,通常都包括如下4个部分:
(1) 需要加密的报文,也称为明文; (2) 加密以后形成的报文,也称为密文; (3) 加密、解密的装置或算法; (4) 用于加密和解密的钥匙,称为密钥。密钥可以是数字、词汇或者语句。
在所有的密码体制中,密钥起着关键的作用。所谓性能良好的密钥序列,使指该序列的生成的规律性不容易被第三者所掌握。显然,一种完全随机的序列是最理想的。这在实际中很难办到。于是,人们采用一种周期长,重复概率非常小的序列,随机性能接近于理想的伪随机序列来代替。传统密码体制,在通信之前,双方必须先约定所使用的密钥,而密钥的传递和约定需要通过专门的保密信道。对于一个大型的数据通信网络,管理和分配密钥很困难。
基于单钥技术的传统加密方法主要包括代码加密法、替换加密法、变位加密法和一次性密码簿加密法等。 (1) 代码加密法。通信双方使用预先设定的一组代码表达特定的意义,而实现的一种最简单的加密方法。代码可以是日常词汇、专用名词,也可以是某些特殊用语。例如: 密文:姥姥家的黄狗三天后下崽。 明文:县城鬼子三天后出城扫荡。 这种方法简单好用,但通常一次只能传送一组预先约定的信息,而且重复使用时是不安全的,因为那样的话窃密者会逐渐明白代码含义。 (2) 替换加密法。这种方法是制定一种规则,将明文中的每个字母或每组字母替换成另一个或一组字母。例如,下面的这组字母对应关系就构成了一个替换加密器: 明文字母:A B C D E F„„ 密文字母:K U P S W B„„ 虽然说替换加密法比代码加密法应用的范围要广,但使用得多了,窃密者就可以从多次搜集的密文中发现其中的规律,破解加密方法。 (3) 变位加密法。与前两种加密方法不同,变位加密法不隐藏原来明文的字符,而是将字符重新排序。比如,加密方首先选择一个用数字表示的密钥,写成一行,然后把明文逐行写在数字下。按照密钥中数字指示的顺序,将原文重新抄写,就形成密文。例如: 密钥:6835490271 明文:小赵拿走黑皮包交给李 密文:包李交拿黑走小给赵皮 (4) 一次性密码簿加密法。这种方法要先制定出一个密码薄,该薄每一页都是不同的代码表。加密时,使用一页上的代码加密一些词,用后撕掉或烧毁该页;然后再用另一页上的代码加密另一些词,直到全部的明文都加密成为密文。破译密文的唯一办法就是获得一份相同的密码簿。 计算机出现以后,密码簿就无需使用纸张而使用计算机和一系列数字来制作。加密时,根据密码簿里的数字对报文中的字母进行移位操作或进行按位的异或计算,以加密报文。解密时,接收方需要根据持有的密码簿,将密文的字母反向移位,或再次作异或计算,以求出明文。
数论中的“异或”规则是这样的:1^1=0,0^0=0;1^0=1,0^1=1。下面就是一个按位进行异或计算的加密和解密实例: 加密过程中明文与密码按位异或计算,求出密文: 明文:101101011011 密码:011010101001 密文:110111110010 解密过程中密文与密码按位异或计算,求出明文: 密文:110111110010 密码:011010101001
而目前的主要加密算法有DES算法 RSA算法 对称算法 非对称算法 公钥算法 MD5算法等,我在此着重阐述DES的原理与实现方法
DES工作的基本原理 DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。它的工作的基本原理是,其入口参数有三个:key、data、mode。 key为加密 解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。
DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环。 DES 的常见变体是三重 DES,使用 168 位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。如果三个 56 位的子元素都相同,则三重 DES 向后兼容 DES。 明文按64位进行分组, 密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。
DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一 秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的,当然,随着科学技术的发展,当出现超高速计算机后,我们可考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。
实现加密的方法 DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,整个算法的主流程图如下: 其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则见下表: 58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4, 62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8, 57,49,41,33,25,17, 9,1,59,51,43,35,27,19,11,3, 61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7, 即将输入的第58位换到第一位,第50位换到第2位,...,依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0 是右32位,例:设置换前的输入值为D1D2D3......D64,则经过初始置换后的结果为:L0=D58D50...D8;R0=D57D49...D7。 经过16次迭代运算后。得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置换的逆运算。例如,第1位经过初始置换后,处于第40位,而通过逆置换,又将第40位换回到第1位,其逆置换规则如下表所示: 40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31, 38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29, 36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27, 34,2,42,10,50,18,58 26,33,1,41, 9,49,17,57,25, 放大换位表 32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10,11, 12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21, 22,23,24,25,24,25,26,27,28,29,28,29,30,31,32, 1, 单纯换位表 16,7,20,21,29,12,28,17, 1,15,23,26, 5,18,31,10, 2,8,24,14,32,27, 3, 9,19,13,30, 6,22,11, 4,25, 在f(Ri,Ki)算法描述图中,S1,S2...S8为选择函数,其功能是把6bit数据变为4bit数据。下面给出选择函数Si(i=1,2......8)的功能表: 选择函数Si S1: 14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7, 0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,