资源描述:
《des算法的介绍和实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、DES算法的介绍和实现收藏一.DES算法介绍DES(DataEncryptionStandard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。虽然56位密钥的DES算法已经风光不在,而且常有用Des加密的明文被破译的报道,但是了解一下昔日美国的标准加密算法总是有益的,而且目前DES算法得到了广泛的应用,在某些场合,她仍然发挥着余热^_^.1.1密钥生成1.1.1取得密钥从用户处取得一个64位(本文如未特指,均指二进制位))长的密码key,去除64位密码中作为奇偶校验位的第8、16、24、32、40、48、56、64位,剩下的56位作为有
2、效输入密钥.1.1.2等分密钥表1.5749413325179158504234261810259514335271911360504436表2.6555473931231576254463830221466153453729211352820124把在1.1.1步中生成的56位输入密钥分成均等的A,B两部分,每部分为28位,参照表1和表2把输入密钥的位值填入相应的位置.按照表1所示A的第一位为输入的64位密钥的第57位,A的第2位为64位密钥的第49位,...,依此类推,A的最后一位最后一位是64位密钥的第36位。1.1.3密钥移位表3.i12345678ǿ11222222
3、i910111213141516ǿ12222221DES算法的密钥是经过16次迭代得到一组密钥的,把在1.1.2步中生成的A,B视为迭代的起始密钥,表3显示在第i次迭代时密钥循环左移的位数.比如在第1次迭代时密钥循环左移1位,第3次迭代时密钥循环左移2位.第9次迭代时密钥循环左移1位,第14次迭代时密钥循环左移2位.第一次迭代:A(1)=ǿ(1)AB(1)=ǿ(1)B第i次迭代:A(i)=ǿ(i)A(i-1)B(i)=ǿ(i)B(i-1)1.1.4密钥的选取表4.141711241532815621102319124268167272013241523137475530405
4、1453348444939563453464250362932在1.1.3步中第i次迭代生成的两个28位长的密钥为把合并按照表4所示k的第一位为56位密钥的第14位,k的第2位为56位密钥的第17位,...,依此类推,k的最后一位最后一位是56位密钥的第32位。生成与进行第i次迭代加密的数据进行按位异或的48位使用密钥:1.1.5迭代DES算法密钥生成需要进行16次迭代,在完成16次迭代前,循环执行1.1.3-1.1.4步.最终形成16套加密密钥:key[0],key[1],key[2],….key[14],key[15].1.2数据的加密操作1.2.1取得数据把明文数据分成
5、64位的数据块,不够64位的数据块以适当的方式补足。1.2.2初始换位表5.58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157按照表5所示把输入的64位数据的原第58位换到第一位,原第50位换到第二位,...,依此类推,最后的得到新的64位数据.OldDatanewData1.2.3数据扩展表6.321234545678989101112131213141516171617181920212
6、0212223242524252627282928293031321第一次迭代以1.2.2步中生成的newData作为输入数据,第i(i>1)次迭代以第i-1次的64位输出数据为输入数据,把64位数据按位置等分成左右两部分:保持left不变,根据表6把right由32位扩展成48位把扩展后的48位right与第i次迭代生成的48位加密密钥进行按位异或操作形成一个新的48位的right.1.2.4数据压缩表7.1123456781-80xe0x00x40xf0xd0x70x10x49-160x20xe0xf0x20xb0xd0xb0xe17-240x30xa0xa0x60x60
7、xc0xc0xb25-320x50x90x90x50x00x30x70x833-400x40xf0x10xc0xe0x80x80x241-480xd0x40x60x90x20x10xb0x749-560xf0x50xc0xb0x90x30x70xe57-640x30xa0xa0x00x50x60x00xd表7.2123456781-80xf0x30x10xd0x80x40xe0x79-160x60xf0xb0x20x30x80x40xf17-240x90xc0x70x00x20x10xd0xa25-32