DES讲解

        DES加密算法整体来说分为两部分:明文部分、密钥部分,两部分分别处理后合并,继续执行某些操作行成密文。它的安全性取决于密钥的不可预测性,而不是加密方法的保密性。那么其实每一步的操作都是公开的,只是密钥无法被破解,之所以无法破解是因为密钥是8字节的,即64位二进制,破解起来很困难。

        由于一系列操作都是以8字节为基础,所以明文输入应该是为8字节,那显然,明文只能输8字节这并不合理,所以要给明文分组,每8字节一组,不足8字节就补0。(这里其实存在一个问题,补0固然可以加密,但是解密时,如何判断0是补的0还是明文本身就有的0,所以补足位的选取很重要,有兴趣的可以一起探讨。)

        这里设置了3个循环变量i,j,k。j代表了明文的组数,i代码明文循环的次数(即明文的组数),k代表密钥循环的次数。

        明文主要涉及的模块有:初始置换,扩展变换等。

        密钥主要涉及的模块有:置换选择1,循环移位等,置换选择2。

        明文和密文通过乘积变换组合在一起,其中包括S盒操作,置换运算P,以及初始逆置换,由此便可以形成密文。

        其中很重要的一个模块是S盒,S盒主要提供分组密码算法所必须的混淆作用,是许多密码算法的唯一非线性部件,它的密码强度决定了整个密码算法的安全强度。

        附件为DES的流程图,具体的操作步骤及方法请看附件。流程图可能有一些不标准的地方,欢迎指正。

        DES的解密即以上的逆过程。

相关推荐