Python中如何实现DES加密及其原理与实例分析案例?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2429个文字,预计阅读时间需要10分钟。
加密流程+首先说明一下设置换位的意图,比如说是5678这个字符串,设置换位表为2143,换位表中数字表示的是位置,所以字符串变成6587。所有的换位表在程序中。注意S盒设置换位不统一,会另外说明。
加密流程
首先说一下置换的意思,比如说有5678这个字符串,置换表为2143,置换表中的数表示的是位置,所以字符串变成6587。所有的置换表在程序中。(S盒置换不一样,会另外说明)
密钥部分
- 把8位字符串密钥变成2进制(好像密钥只可以是8位,这一块我也没有搞太清楚)
- 64位密钥进行PC1置换,变成56位,因为以前DES是用硬件实现的,所以8,16,24,32,40,48,56,64位为校验位,不记入密钥部分。但是我们现在是用软件实现,所以这8位需要去掉,再打乱顺序。
- 将56位密钥对半分L0和R0、分别对L0和R0进行左循环移位,(当轮数为第1、2、9、16轮时,移动1位,其余时候移动两位)L0,R0移动1位后得到L1,R1。L1和R0继续进行下一轮,进行16轮。
- 上面移位得到的所以Li+Ri进行PC2置换得到16个子密钥(PC2置换把56位数据变成了48位)。
明文部分
- 先进行明文填充,采用PKCS #5规则,如果刚好满足每组有8个字节,则再添加一组,每个字节为000010000,如果最后一组没有8个字节,则把这一组填充成8个字节,填充的字节为少掉的字节的数目,比如有7个字节,则填充00000001。
- 再进行初始置换,把64位明文打乱。
本文共计2429个文字,预计阅读时间需要10分钟。
加密流程+首先说明一下设置换位的意图,比如说是5678这个字符串,设置换位表为2143,换位表中数字表示的是位置,所以字符串变成6587。所有的换位表在程序中。注意S盒设置换位不统一,会另外说明。
加密流程
首先说一下置换的意思,比如说有5678这个字符串,置换表为2143,置换表中的数表示的是位置,所以字符串变成6587。所有的置换表在程序中。(S盒置换不一样,会另外说明)
密钥部分
- 把8位字符串密钥变成2进制(好像密钥只可以是8位,这一块我也没有搞太清楚)
- 64位密钥进行PC1置换,变成56位,因为以前DES是用硬件实现的,所以8,16,24,32,40,48,56,64位为校验位,不记入密钥部分。但是我们现在是用软件实现,所以这8位需要去掉,再打乱顺序。
- 将56位密钥对半分L0和R0、分别对L0和R0进行左循环移位,(当轮数为第1、2、9、16轮时,移动1位,其余时候移动两位)L0,R0移动1位后得到L1,R1。L1和R0继续进行下一轮,进行16轮。
- 上面移位得到的所以Li+Ri进行PC2置换得到16个子密钥(PC2置换把56位数据变成了48位)。
明文部分
- 先进行明文填充,采用PKCS #5规则,如果刚好满足每组有8个字节,则再添加一组,每个字节为000010000,如果最后一组没有8个字节,则把这一组填充成8个字节,填充的字节为少掉的字节的数目,比如有7个字节,则填充00000001。
- 再进行初始置换,把64位明文打乱。

