Chinaunix首页 | 论坛 | 博客
  • 博客访问: 303425
  • 博文数量: 69
  • 博客积分: 3093
  • 博客等级: 中校
  • 技术积分: 626
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-17 13:48
文章分类

全部博文(69)

文章存档

2011年(27)

2010年(11)

2009年(31)

分类: C/C++

2011-03-18 17:38:21

通过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字节的密钥,分别定义为左右两个子密钥,即KL和KR,称为双长度密钥的三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语言的话,时间会稍微快一点。
阅读(1449) | 评论(0) | 转发(0) |
0

上一篇:IOKit研究

下一篇:Puppy Linux 源码信息

给主人留下些什么吧!~~