[密码学]DES
先声明两个基本概念
代换(substitution),用别的元素代替当前元素。des的s-box遵循这一设计。
abc-->def
置换(permutation),只改变元素的排列顺序。des的p-box遵循这一设计。
abc-->bac
DES最核心的算法就是feistel结构的16轮加密 。
该结构以工作在IBM的德国密码研究员Horst Feistel的名字命名。其中涉及轮函数F,和每一轮的子密钥K。
F函数内部:
依次经过带<扩展属性>的p-box(会产生重复的元素),(与每一轮对应的子密钥K)异或,带<压缩属性>s-box,正常的p-box。
子密钥K的生成方法:
标准的DES要求密钥为64bit,但是每8位中最后一位为奇偶校验位,不参与真正的加密。
pc--permutation choice,也是带<压缩属性>的p-box
经过pc1盒----舍弃奇偶校验位(共8bit,剩下56bit)并置换。
记56bit的左28bit为C0,右28bit为D0。C0,D0进行循环左移,左移的位数根据当前的加密轮次不同。
再经过pc2盒,即可生成当前轮次的子密钥。