对称加密与公钥加密(上)

来源:互联网 发布:mac电脑安装flash 编辑:程序博客网 时间:2024/04/29 08:29

接着上一篇初入密码学世界,这一篇博客我们将介绍以下内容,先来一个思维导图,看看这篇博客的内容

以上内容在这篇博客中我都会详细地讲解,当然,这只是个大体的架构图,很多细节的知识点没有包含进去。

对称密码

在开篇之前,先说几个名词

比特序列:对于这个词,学过任何一门编程语言的人都不陌生,其实它就是0和1排列而成的数字

编码:将现实世界中的东西映射为比特序列的过程称为编码

XOR:看到这三个英文字母,是不是一脸懵逼呢,它的中文名叫异或

DES,AES,Rijndael这里先不解释,到讲到它们的时候再做解释

1.异或

这里,我们就简单先说一下异或,因为对称加密中它很重要

1个比特的XOR运算规则如下

0 XOR 0   = 0

0 XOR 1   = 1

1 XOR 1   = 0

1 XOR 0   = 1

XOR用符号,这玩意儿不画图,我还不好操作,下面我们还是使用XOR吧

现在我们来看个例子

0  1  0  0  1  1  0  0  --------- A

XOR

1  0  1  0  1  0  1   0  ----------B

等于

1  1  1  0   0  1  1  0 ---> A XOR B

-----------------------------------------------------------------------------------------------------------------

1  1  1  0   0  1  1  0 --->A XOR B

XOR

1  0  1  0   1   0  1  0 -------------B

等于

0  1  0  0   1   1   0  0 -------->变回了 A

-------------------------------------------------------------------------------------------------------------------

上面这个例子干了什么事呢,大家应该看明白了吧

将明文 A 用密钥 B 进行加密,得到密文A XOR B

将密文 A XOR B 用密钥 B 进行解密,得到明文 A

对于密码技术来说,“是否可以预测”是非常重要的一点,能够产生不可预测的比特序列,对于密码学技术贡献是巨大的。这种不可预测的比特序列就称为随机数。关于这个问题以后的博文中再做介绍

2.一次性密码本(维纳密码)

原理就是将明文与一串随机比特序列进行XOR运算,与上面的算法一致,不多做解释。

特点:在理论上是无法破解的

由于一次性密码本并没有什么卵用,故而不在这里不多讲,有兴趣的人自己去查资料。虽然一次性密码本是一种几乎没有实用性的密码,但是,一次性密码本的思路却孕育出了流密码。流密码使用的不是真正的随机比特序列,而是伪随机数生成器产生的比特序列。流密码虽然不是无法破译的,但是只要使用高性能的伪随机数生成器,就能够构建出强度较高的密码系统。关于流密码下面会详细介绍。关于伪随机数生成器估计要在后面的博文中才能介绍。

3、DES

DES是一种将64比特的明文加密成64比特的密文的对称密码算法,它的密钥长度是56比特。为什么密钥长度只有56比特呢,原因是每隔7个比特位会设置一个用于错误检查的比特,因而其密钥长度是56位。

DES是以64比特的明文(比特序列)为一个单位来进行加密的,这个64比特的单位称为分组。DES其实就是分组密码中的一种。

DES每次只能加密64比特的数据,如果要加密的明文长度比较长,就需要对DES加密进行迭代,迭代的具体方式成为模式(mode)

4.DES的结构(Feistel网络)

在Feistel网络中,加密的各个步骤称为轮(round),整个加密过程就是进行若干次轮的循环

总结一下,一轮的具体步骤如下

(1) 将输入的数据等分为左右两部分

(2) 将输入的右侧直接发送到输出右侧

(3) 将输入的右侧发送到轮函数

(4) 轮函数根据右侧的数据和子密钥,计算出一串看上去是随机的比特序列

(5) 将上一侧得到的比特序列与左侧数据进行XOR运算,并将结果做为加密后的左侧

DES的加密和解密过程很相似,只要对调密钥就可以,这里不多说

特点

a.轮数可以任意增加

b.加密无论用任何函数作为轮函数都可以正确解密

c.加密和解密可以用完全相同的结构来实现

4.三重DES

将DES重复三次所得到的一种密码算法,也称为TDEA。出现3DES的原因很简单,DES已经可以在短时间内暴力破解啦。

5.AES/Rijndael

Rijndael是新一代密码算法---->AES

和DES一样,Rijndael算法也是由多个轮组成,每一轮分为SubBytes,ShiftRows, MixColumns,AddRoundKey四个步骤;Rijndael使用SPN结构。Rijndael的输入分组为128比特,也就是16字节

在Rijndael加密过程中,每一轮的处理为

SubBytes--->ShiftRows--->MixColumns--->AddRoundKey

而在解密时,则反过来

AddRoundKey--->MixColumns--->ShiftRows--->SubBytes



0 0
原创粉丝点击