一种DES加密算法的实现方法与流程

文档序号:12751436阅读:598来源:国知局
本发明涉及加密
技术领域
,具体涉及一种DES加密算法的实现方法。
背景技术
:随着计算机网络和Internet的发展,全球信息化己成为人类社会发展的大趋势。在今天的信息社会里,科学技术的研究和发展及商业等方面,无一不与信息息息相关,数据安全保密问题也日益突出,人们不能靠用降低信息共享度的简单方法来解决问题,唯一可行的方案是积极解决信息共享和网络安全的问题。由于计算机网络具有联结形式多样性、终端分布不均匀性和网络开放性等特征,致使网络容易受到黑客及恶意软件和其他不轨的攻击,Internet的安全问题已经成为了信息发展的一块绊脚石。并且,随着信息技术的发展和越来越广泛的应用,整个社会的运转越来越密切地依赖于信息技术,依赖于各种基础信息系统的正常运转,依赖于储存在信息系统中各种重要信息的正确维护和正常使用。信息安全问题,可以说是关系到国家社会的稳定安全、企业的兴衰存亡,公众的生活幸福,这个问题将显得越来越重要。在我国,近年来信息安全问题也日益突出,信息安全和网络安全问题也成为社会性问题,不仅政府部门、金融部门重视,而且企业事业单位和个人都日益重视这一重要问题。所以,网上信息的安全和保密又保证网络传输速率是信息时代的迫切需要,现有的RSA算法在加密中不仅密钥长度很长,使它在许多网络上传播也带来了复杂性,严重影响了传播速度,而且它在软件的实现上也处于劣势。技术实现要素:本发明针对所要解决的技术问题是提供一种DES加密算法的实现方法。为实现本发明的目的,本发明所采用的技术方案是:一种DES加密算法的实现方法,使用56位密钥对64位的数据进行加密,并对64位数据块进行16轮编码,与每轮编码时,一个48位的“每轮”密钥值由56位的完整密钥得出来,其特征在于,具体步骤如下:(1)将64bit的明文经过一个初始置换IP后,比特重排产生了经过置换的输入;(2)由对同一个函数进行16次循环,这个函数本身既包含有置换又包含有替代函数,最后一个循环(第16个)的输出由64bit组成,这个输出的左边和右边两个部分经过交换后就得到预输出;每个64bit的中间结果的左右两个部分被当成两个独立的32bit数值处理,分别标记为L(左)和R(右),每一个循环的处理过程总结为下列公式:L[i]=R[i-1]R[i]=L[i-1]⊕F(R[i-1],K[i])在这个循环中使用的密钥Ki的长度是48bit,输入的R的长度是32bit;这个输入的R先被扩展到48bit,扩展操作由扩展置换表定义包括一个置换和一个包含重复使用R中16个比特的扩展操作组成;所得到的48bit再和Ki进行异或,得到的48bit结果再经过一个置换函数S产生32bit的输出后进行置换;(3)上述预输出通过一个逆初始置换IP-1生成了64bit的密文;(4)将56bit密钥通过一个置换函数,接着对于16个循环的每一个,都通过一个循环左移操作和一个置换操作的组合产生出一个子密钥Ki;每一个循环的置换函数都是相同的,但由于密钥比特的重复移位,产生的子密钥都是不相同的;加密算法的关键代码:DES_ENC(X64);ExterualIP,inIP,EXT,POS,SBOX1,,,,,SBOX8;globalK48[1-16];State64←IP(x64);Fori←1to16;Do{令state64=SL32||SR32;Temp48←EXT(SL32);令temp48=t6[1]||t6[2]||t6[3]||t6[4]||t6[5]||t6[6]||t6[7]||t6[8];t4[1]←SBOX[1](t6[1]);t4[2]←SBOX[2](t6[2]);t4[3]←SBOX[3](t6[3]);t4[4]←SBOX[4](t6[4]);t4[5]←SBOX[5](t6[5]);t4[6]←SBOX[6](t6[6]);t4[7]←SBOX[7](t6[7]);t4[8]←SBOX[8](t6[8]);temp32=t4[1]||t4[2]||t4[3]||t4[4]||t4[5]||t4[6]||t4[7]||t4[8];temp32←POS(temp32);SR32←temp32⊕SL32;}令State64=SL32||SL32;State64←SR32||SL32;State64←invIP(State64);ReturnState64。初始置换关键代码:IP(X64)ConstArray[1-64],{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};令X64=x1[1]||x1[2]||,,,,||x1[64];Y64=y1[1]||y1[2]||,,,,||y1[64];Fori←1to64;do{y1[i]=x1[ConstArrayi]}returny64。逆初始置换的关键代码:invIP(m64);ConstArray[1-64],{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,38,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25};令X64=m1[1]||m1[2]||,,,,||m1[64];Y64=n1[1]||n1[2]||,,,,||n1[64];Forg←1to64;do{y1[i]=x1[ConstArrayi]}returny64。扩展置换主要关键代码:EXT(x32)ConstArray[1-48],{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};令X32=x1[1]||x1[2]||,,,,||x1[32];Y64=y1[1]||y1[2]||,,,,||y1[48];Forj←1to48;do{y1[i]=x1[ConstArrayi]}returny48。置换函数的关键代码:POS(m32)ConstArray[1-32],{16,7,20,2,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};令m32=m1[1]||m1[2]||,,,,||m1[32];Y64=n1[1]||n1[2]||,,,,||n1[32];Fori←1to32;do{y1[i]=x1[ConstArrayi]}returnn32。本发明使用大量运算的多轮迭代计算的方法实现DES加密算法,为生产和生活实践提供一种高强度的加密工具,解决了现有算法密钥长度长,影响传播速度的问题,具有很高的现实应用价值,适用于多种领域加密使用。附图说明图1为本发明的算法实现结构图。具体实施方式下列对本发明的实施作进一步的说明,以便本领域的技术人员能够更好的理解并实施。实施例1一种DES加密算法的实现方法,使用56位密钥对64位的数据进行加密,并对64位数据块进行16轮编码,与每轮编码时,一个48位的“每轮”密钥值由56位的完整密钥得出来,其特征在于,具体步骤如下:(1)如下表1所示,将64bit的明文经过一个初始置换IP后,比特重排产生了经过置换的输入。表1:初始置换表(IP)(2)由对同一个函数进行16次循环,这个函数本身既包含有置换又包含有替代函数,最后一个循环(第16个)的输出由64bit组成,这个输出的左边和右边两个部分经过交换后就得到预输出;每个64bit的中间结果的左右两个部分被当成两个独立的32bit数值处理,分别标记为L(左)和R(右),每一个循环的处理过程总结为下列公式:L[i]=R[i-1]R[i]=L[i-1]⊕F(R[i-1],K[i])在这个循环中使用的密钥Ki的长度是48bit,输入的R的长度是32bit。这个输入的R先被扩展到48bit,扩展操作由扩展置换表,如下表2所示,定义包括一个置换和一个包含重复使用R中16个比特的扩展操作组成。表2:扩展置换表3212344456789891011121312131415161716171819202120212223242524252627282928293031321所得到的48bit再和Ki进行异或,得到的48bit结果再经过一个置换函数S产生32bit的输出后按照表3格进行置换。表3:置换函数表(3)上述预输出通过一个逆初始置换IP-1,如表4所示,生成了64bit的密文。表4:逆初始置换表(IP-1)40848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725(4)将56bit密钥通过一个置换函数,接着对于16个循环的每一个,都通过一个循环左移操作和一个置换操作的组合产生出一个子密钥Ki。每一个循环的置换函数都是相同的,但由于密钥比特的重复移位,产生的子密钥都是不相同的。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1