DES(Data Encryption standard) 数据加密标准设计原理
/**
* @(DEC data encryption standard)数据加密标准
* @TODO 使用三重DES更安全 triple DES
* 设计成运行在64位数据块上。
* 数据块在16轮内转换为一个加密的输出块(64bit)
* 每一轮使用一个不同的48bit秘钥进行加密
* 这16轮中的加密秘钥每一个都来自于一个56bit的主秘钥。
* 一个输入块在开始其 16轮的加密之前,首先要进行排列,其逆随后应用于加密过的输出上,导致最终的输出数据块。
* --加密过程
* 每个加密轮i将前一轮i-1产生的64位数据块作为其输入
* 这64位分别为左部分Li-1和右部分Ri-1每部分包含32位,右部分作为下一轮的左部分
* // TODO: 2022/10/8
* 函数f
* 将一个32位的数据块Ri-1作为输入,加上一个48位的秘钥Ki【1】,产生一个32位的数据块
* 32位数据块和Li-1进行XOR运算,产生Ri
* 将Ri-1扩展为48位数据块并与Ki进行XOR运算
* 结果被分为8块,每块6位,然后将每块输入到不同的S盒中?
* S盒是一种运算,将有64种可能的6位输入的每一种都替换为有16种可能的4位输出的一种
* 然后没块4位的8个输出块结合为一个32位值并重新排列。
* 【1】
* 第i轮的48位密钥Ki是从56位的主密钥中得到
* 首先排列主密钥并将其分为两个28位的等分
* 对每轮来说,每一半首先都左移一位或两位,之后取出24位
* 先取出的24位与从移动后的另一半中取出的24位在一起,就构成了一个48位的秘钥。
*
*/
图片来源《分布式系统原理和范型》