加密算法(1)DES

DES加密算法最早是由IBM在上世纪70年代开发的,后来成为美国军方和政府机构的标准加密算法,因此DES几乎成为全球最流行的对称加密算法,采用块加密的方式,广泛应用于各个领域。

DES的基本流程如下图所示:

通过56位密钥和64位明文之间的各种替换和迭代运算,最后生成64位的密文。在实际应用中通常明文和密钥都是8个字节,但是对于8个字节的密钥而言,每个字节只有前面的7位数据是有效的,第8位数据在DES计算过程中是忽略的,也就是说,如果你计算的密钥值分别为:0102030405060708,和0003020504070609,那么计算的结果应该是一样的,因为两组数据分别去掉每个字节的第8位之后是完全相同的。

其中:

IP代表初始置换(Initial Permutation),说白了就是把原来的数据按照规定的格式进行重新组合,俗话说就是倒腾数据;

PC-1:表示置换选择1(Permutation Choice 1),也是按照规定的格式倒腾;

PC-2:表示置换选择2(Permutation Choice 2),含义同上;

IP-1:表示逆初始置换,按照和IP初始置换相反的方式把数据再倒腾回来。

 

在实际应用中一般有单DES和三DES两种方式,我们把明文记作:P,密文记作:E,密钥记作:K,加密记为:DES(),解密记为:DES-1(),那么单DES加密可以描述为:

E=DES(P,K)

单DES解密类似可以描述为:

P=DES-1(E,K)

对于三DES而言,可以理解为用三个密钥K1,K2,K3分别进行三次加解密来求得最终的密文,可以描述为:

E=DES(DES-1(DES(P,K1),K2),K3)

实际应用中多数的三DES运算都使用16字节的密钥,分别定义为左右两个子密钥,即KLKR,称为双长度密钥的三DES运算,加解密公式可以描述为:

E=DES(DES-1(DES(P,KL),KR),KL)

P=DES-1 (DES (DES-1 (E,KL),KR),KL)

目前多数智能卡芯片都已经集成了硬件DES引擎,可以很方便地进行DES运算,而如果使用软件实现DES的话,一个DES算法大约需要占用1K左右的代码空间,对于没有接触过DES算法的工程师来说,通常需要一周的时间可以完成一个比较完美的汇编语言DES算法。而如果采用C语言的话,时间会稍微快一点。

你可能感兴趣的:(加密算法(1)DES)