Data Encryption Standard.
密码体制总体来说有五个部分:明文、密文、加解密算法、密钥。
对称密钥:加密和解密共用一个密钥。非对称密钥就是相反喽。
des属于对称密钥。加密过程大致可用一小段话抽象描述。
第一大步:生成16个子密钥
该过程需要经过两次表置换,第一次置换将原密钥(64位含8个奇偶校验位)生成过度密钥C0D0(56位),并依据C0D0分别进行16次左移位,生成C1D1C2D2......C16D16;第二次将C1D1C2D2等置换过渡密钥生成48位K0K1K2....K16(48位)。
第二大步:明文重排
首先将明文打乱,将原明文(64位)根据置换表打乱成新明文L0(32位)R0(32位)。然后根据L0R0生成L1R1L2R2......L16R16。
L0R0生成L1R1过程描述如下:L1替换为原来的R0,R1则等于L0与f(R0,K1)函数值的和。
f(R0,K1),由于R0是32位的,所以R0和K1要进行运算得先将R0扩展成48位。R0经过置换表置换成48位长的R0‘。接着将K1和R0‘进行异或操作得到E(48位)。因为最后生成要与L0相加得到R1,所以又将E(48位)通过S盒(8个盒)缩减为32位S,为了安全起见,最后在相加前进行一次置换变成S‘。接着将S’与L相加,获得R1。
按上述步骤获取全部的L1R1......L16R16后,最后将L16R16位置对调R16L16,接着再进行一次表置换,生成密码。