DES原理学习以及C语言实现(一)
程序员文章站
2022-05-11 20:31:13
...
DES算法是一种最通用的对称**算法,属于分组密码算法。主要用于民用敏感信息加密,该算法是IBM公司在1975年发布。在1977年7月15日得到美国国家标准局认可。
一、DES算法简单描述。
DES的输入是8个字节64位明文和64位**,输出是64位密文。明文和**都是用户输入。
64位明文
======> 64位密文
64位**
其加密有四个步骤完成。
- 初始置换函数IP
- 子**Ki及获取
- 密码函数F末
- 置换函数IP^-1
DES将用户需要加密的数据分组,每组8个字节,64位。不足8位的进行补位。
置换函数IP是将用户的输入的二进制形式在一个8*8的矩阵中进行置换。
经过初始置换后,进行16轮完全相同的运算,在运算过程中数据与秘钥结合。
16个子**是通过用户第一次输入的**得到。
函数F的输出经过一个异或运算,和左半部分结合形成新的右半部分,原来的右半部分成为新的左半部分。每轮迭代的过程可以表示如下:
Li = R(i - 1);
Ri = L(i - 1)⊕f(Ri-1,Ki-1)
将最终的左右不分合在一起,在进行置换IP^-1,也就是第一步的逆置换。
1)、输入64位明文数据,并进行初始置换IP;
2)、在初始置换IP后,明文数据再被分为左右两部分,每部分32位,以L0,R0表示;
3)、在秘钥的控制下,经过16轮运算(f);
4)、16轮后,左、右两部分交换,并连接再一起,再进行逆置换;
5)、输出64位密文。
DES算法特点
- 分组加密算法:以64位为分组。64位明文输入,64位密文输出。
- 对称算法:加密和解密使用同一秘钥
- 有效秘钥长度为56位秘钥通常表示为64位数,但每个第8位用作奇偶校验,可以忽略。
- 代替和置换DES算法是两种加密技术的组合:混乱和扩散。先替代后置换。
- 易于实现DES算法只是使用了标准的算术和逻辑运算,其作用的数最多也只有64 位,因此用70年代末期的硬件技术很容易实现
秘钥算法的特点
优点:
- 效率高,算法简单,系统开销小
- 适合加密大量数据
- 明文长度和密文长度相等
缺点:
- 需要以安全方式进行秘钥交换
- 秘钥管理复杂
推荐阅读