Des加解密算法过程
DES加解密算法过程
⼊⼝参数有3个:key、data、mode。 key为加密解密使⽤的密钥,data为加密解密的数据,mode为其⼯作模式。当模式为加密模式时,明⽂按照64位进⾏分组,形成明⽂组,key⽤于数据加密,当模式为解密模式时,key⽤于对数据解密。实际运⽤中,密钥只⽤到了64位中的56位,这样才具有⾼的安全性。DES( Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是⼀种⽤56位密钥来加密64位数据的⽅法。虽然56位密钥的DES算法已经风光不在,⽽且常有⽤Des加密的明⽂被破译的报道,但是了解⼀下昔⽇美国的标准加密算法总是有益的,⽽且⽬前DES算法得到了⼴泛的应⽤,在某些场合,仍然发挥着余热。DES (Data Encryption Standard),是IBM在上个世纪70年代开发的单密钥对称加解密算法。该算法⽤⼀个56+8奇偶校验位(第8, 16, 24, 32, 40, 48, 56, 64位)=64位的密钥对以64位为单位的块数据进⾏加解密。
1、⼦密钥的⽣成过程:
⽤户输⼊密码时长度不受限制,当⽤户输⼊的密码长度为0时,使⽤缺省64位密码,当输⼊的密码长度⼤于8字节时,前8个字节为有效密码。
我们在加密时设定的密钥先转化成64⽐特的⼆进制,然后再按照密钥置换函数PC-1(8x7)进⾏压缩置换,变成56位,将其置换的输出再分前28位C0和后28位D0两部分。然后再将此2部分进⾏16轮的循环左移及压缩置换PC-2(8X6),最后⽣成16个48位的字密钥。1.1 压缩置换到56位
假设有密钥K(64位) = 133457799BBCDFF1,即:K(64位) = 00010011 00110100 01010111 01111001
10011011 10111100 11011111 11110001
其中加粗标注第8位、第16位、第24位、第32位、第40位、第48位、第56位、第64位作为奇偶校验位,不参与计算,即实际密钥为56位。