DES算法密钥生成详解:密钥与子密钥生成过程
DES算法的密钥生成主要分为两部分:密钥的生成和子密钥的生成。
- 密钥的生成
DES算法使用的密钥长度为64位,但是只有56位是有效的密钥位,剩下的8位是校验位。密钥的生成过程如下:
(1) 从64位密钥中去掉每个字节的第8位校验位,得到一个56位的密钥。
(2) 将这个56位的密钥分成左右两个部分,每个部分28位。
(3) 对这两个部分分别进行循环左移操作,得到16个子密钥。
- 子密钥的生成
DES算法中使用了16个48位的子密钥,每个子密钥都是由原始密钥生成的,子密钥的生成过程如下:
(1) 将原始密钥进行置换操作,将56位的密钥变成64位。
(2) 将这个64位的密钥分成左右两个部分,每个部分32位。
(3) 对右半部分进行扩展置换,将32位扩展成48位。
(4) 将扩展后的右半部分和左半部分进行异或操作,得到一个48位的结果。
(5) 将这个48位的结果进行S盒替换和P盒置换,得到一个新的32位结果。
(6) 将这个32位的结果和原来的左半部分进行异或操作,得到一个新的32位结果,作为下一轮的左半部分。
(7) 重复上述步骤,直到生成16个子密钥。
原文地址: https://www.cveoy.top/t/topic/obS3 著作权归作者所有。请勿转载和采集!