赞
踩
本文主要参照B站博主可 可厉害的土豆 所作笔记,博主讲的很好,具体可参照 DES加密
DES(Data Encryption Standard)加密算法属于对称加密(对应于非对称加密)算法中的分组加密(对应于流密码)算法。
所谓对称加密,即加密与解密所用的密钥是相同的,而非对称加密中,存在公钥与私钥,公钥可解密私钥加密的数据,私钥可解密公钥加密的数据。
所谓分组加密(又叫块加密),是将明文分为字节块,然后对每个字节块进行加密最终拼接在一起得到密文(DES算法分组大小是64位),流密码是按照一个字节一个字节进行加密。
DES加密算法流程:
具体算法流程如下面图示:
IP 置换是指按照一定的规则,将原来的64位二进制重新排序,具体置换表如下图所示:
图中的 Initial Permutation 对应为最开始的 IP 置换表,Final Permutation对应为最后的逆置换表。
Initial Permutation表中第一个数字 58 表示将原始明文中的 58 位放到当前的第一位,第二个数字50表示将原始明文中的50位放到当前的第二位…以此类推,通过置换表将原始明文进行置换。
具体可参见一下实例:
E 扩展置换主要功能是将 32 位的输入扩展为 48 位输出(使 32 位的
R
0
R_0
R0 能够与 48 位的 K 进行异或操作),具体操作过程可参照下图:
上图中的表与前面所讲的置换表功能类似,表中对应的数字 i 代表将32位的文段中第 i 位的二进制写入 i 在表中的位置。
扩展的过程也可以通过图中下方的图的规律的到,即将 32 位的文段分为 8 块,将这八块二进制文段循环排列,将每一块的最后一位放到后一块的最前面,将每一块的最前一位放到前一块的最后面,这样每一块就多加了两位,8 块总共增加了 16 位,所以文段就由原来的 32 位扩展成了 48 位。
具体例子如下图所示:
原始数据:
得到以上 48 位的数据之后,即可与密钥 K 进行异或操作了。
S盒压缩处理即是将异或操作得到的 48 位数据压缩为 32 位,具体操作如下:
按照上面的表格得到 3 行 15 列数据为 13,然后将13转换为二进制即得到压缩后的数据:
P盒置换操作与之前的初始置换操作相同,其置换表如下所示:
将 P 盒置换后的数据与
L
0
L_0
L0 进行异或操作后即得到了
R
1
R_1
R1 ,对以上过程重复进行 16 次即可得到
L
16
L_{16}
L16 与
R
16
R_{16}
R16 ,然后对
L
16
L_{16}
L16 与
R
16
R_{16}
R16 进行拼接将得到的数据进行IP逆置换即得到了所求的密文。
密钥的生成总的操作如下图所示:
2.通过 PC-1 表置换后得到如下结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。