想过成功,也想过失败。但从未想过放弃……

DES的基本流程

上一篇 / 下一篇  2009-11-02 23:18:16 / 个人分类:编程语言

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语言的话,时间会稍微快一点。


TAG:

 

评分:0

我来说两句

日历

« 2024-05-09  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 28908
  • 日志数: 40
  • 建立时间: 2008-11-24
  • 更新时间: 2010-05-20

RSS订阅

Open Toolbar