DES加密的流程如下
1.对64位明文进行初置换,结果为A
2.将A分为两部分,左32位记为L,右32位记为R
3.对R进行拓展置换,得到X(48位)
4.将第I轮的密钥与X异或,得到Y(48位)
5.将Y穿入S盒,得到Z(32位)
6.将Z与L异或,结果传入L中
7.交换R和L
8.再次重复2~7,共计16次
9.将L和R整合,并将结果做末置换,加密完成
解密的流程其实是一样的额,只不过密钥不一样
假设加密时第i轮用的密钥Ki,那么解密时第i轮用的密钥是K(17-i)
下面说一下密钥生成的过程:
首先,我们一开始输入的密钥为X(64位)
1.将密钥X做密钥置换,取出其中58位记为T(58位)
2.取T左边28位为L,T右边28位为R
3.分别对R,L作循环左移
4.再对其做扩展运算,得到K[i]
6.重复3~4,共16次
#include
#include
#include
#include
#include
#include
#include
附运行结果:
