DES——分组密码算法
整体的加密流程
显著的特点
使用56位的密钥(一般密钥说是64位,实际上有效位只有56位,其余8位是校验位)
以64位位单位,对数据分组进行加密和解密(密文与明文长度相同,均为64位)。
DES加密与解密使用同一密钥(属于对称加密)
DES的保密性依赖于密钥。(DES的加密算法是公开的,密钥是保密的)
第一步:首先进行IP置换
初始置换,就是将原来的明文打乱,并进行重新排序,我们参考置换表能知道每一位分别移动到哪一位了。例如第一个数字58代表输入的第58位移动到第一位上。
第二步:16轮的迭代过程
轮函数:E拓展置换(32->48)
拓展的方法:
将32位分成8段,每一段4位,每一段的开头来自上一段的结尾,每一段的结尾来自上一段的开头,就可以完成E拓展。
S盒压缩处理:
经过拓展的48位明文和48位密钥进行异或后在使用8个s盒处理得到32位数据
压缩是将每6位的开头结尾,拼接在一起转换位10进制作为s盒的行号,中间四位转换为10进制作为列号:
参考S盒可以得到数字13
将13转换为2进制位1101就可以进行6进4出的压缩。
P盒置换
S盒位在经过P盒置换,至此,一次论函数操作完毕
密钥的生成
总体思路:
置换选择1:除去8,16,…,64位(8个校验位),表是7*8行的置换表。
然后将56位分为左半部分和右半部分,都是28bit,在经过循环左移,要参考移位次数表:
加粗样式
第一次 1位,第三次2位…
然后再经过一个置换选择PC2,将左半部分密钥和右半部分拼接起来,进行PC置换,输出为48位,置换表6*8:
拼接起来,进行PC置换,输出为48位,置换表6*8: