码迷,mamicode.com
首页 > 其他好文 > 详细

DES原理与实现

时间:2014-10-17 20:25:03      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:des   使用   sp   数据   问题   代码   bs   如何   不同的   

DES是对称密码的一种,它使用56位秘钥对64位长分组进行加密。

DES对每个分组的内容都会进行16轮迭代,每轮的操作相同但是对应不同的子秘钥。所有的子秘钥都是由主密钥推导而来。

 

64位明文加密过程如下:

1. 按位置换(IP)

2. 明文被分成L0和R0两部分。

3. L1=R0  R1=L0⊕f(R0,k1)

4. 重复步骤3 16次

5. 按位置换(IP^-1)

 

其中的重点在于:

1. 如何实现函数f

2. 如何生成子秘钥k

问题简单的解答如下:

1. 函数f 输入与输出的数据为32位。

E:

  将输入的数据分成8个4位的分组。这个过程在E盒中进行。E盒是一种特殊的置换。

  32位输入中有16位输入位在输出中出现了两次。分别为第1 4 5 8 9 12 ... 32位

  E盒的输入数据为32位,输出为48位,仅有置换操作。

S:

  将拓展得到的48位结果与密钥ki进行XOR操作,将8个6位长的分组送入8个不同的替换盒S中,将6位输出裁剪成4位。

  S盒的输入数据为48位,输出为32位,有和密钥的XOR操作,也有置换。

P:   

  按位置换,以实现扩散。

  P盒的输入和输出均为32位,仅有置换操作。

2. 密钥生成函数GetKey的输入为64位密钥,输出为16个48位子密钥。

密钥的实际有效位数为56位,其余8位为奇校验位。PC-1处理得到的56位密钥分为C和D两部分。首先将C和D按照轮数移动一位或者两位。然后将C和D合起来,用PC-2将56位密钥置换成48位密钥。

PC-1:

  置换的意义是去掉校验位。

PC-2:

  意义是将56位置换成48位。

 

鉴于我还没开始写代码,先写一下我认为可能会出现的问题:

1. 最基本的,怎么实现置换

2. 密钥的格式是什么:字母或者是数字?多少位?

3. 函数过程中数据应该是以二进制流动的,二进制如何与字母数字转化?(啊这个问题好像不难)

 

DES原理与实现

标签:des   使用   sp   数据   问题   代码   bs   如何   不同的   

原文地址:http://www.cnblogs.com/kuoaidebb/p/4031914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!