简介
加密解密的过程中使用同一个**,也称作单**加密。
例如:
I love you 每个字母按字母表的顺序想后移动一位变成J mpwf zpv,而J mpwf zpv按字母表的顺序向前移动一位变成I love you,此时加密和解密的过程中1就充当了**的角色。I love you称之为明文,J mpwf zpv称之为密文
对称加密的问题
**的配送:接收者A收到了B发来的密文,A要想进行解密,就必须使用和B进行加密时相同的**,因此B必须要把**也送给A。但是这样就产生了一个矛盾,如果有一种方法能将**发送出去,那岂不是可以使用同样的方法来发送明文。
对称加密实例
DES
- DES是1997年美国联邦信息处理标准中所采用的一种对称密码算法,一直以来被美国以及其他国家的政府和银行等广泛采用。随着计算机的快速发展,DES已经被暴力**,1997年用时96天破译**,1998年41天破译**,到了1999年只用22小时15分钟就可以破译。
- DES是一种将64比特的明文加密成64比特的密文的对称密码算法,它的**长度是56比特。尽管从规格上来说,DES的**长度是64比特,但是由于每隔7比特会设置一个用于错误检查的比特,因此实质上其**长度是56比特。
- DES以64比特的明文为一个单位来进行加密,每64比特为一个分组。
- DES每次每次只能加密64比特的数据,如果要加密的明文比较长,就需要对DES加密进行迭代,而迭代的具体方案就称为模式。
- DES内部实现理论:在des中各个步骤称为轮,整个加密过程进行16轮循环。
单轮加密:
- 子**:中间的子**指的是本轮加密使用的**,每一轮都需要使用一个不同的子**,由于它只在一轮中使用,只是一个局部**,所以称之为子**。
- 轮函数:根据右侧和子**生成对左侧进行加密的比特序列,它是密码体系的核心。将轮函数的输出于左侧进行XOR运算,其结果就是加密后的左侧。
两轮加***相同:
连续两轮加密的**如果相同,相当于加密之后又进行解密。
三轮加密和解密分别如下:
右半部分实际上没有进行任何处理,这在加密算法中看起来是一种浪费,但却保证了可解密性,因为完全没有进行任何处理的右半部分是解密过程所必须的信息。由于加密和解密可以用完全相同的结构来实现,因此用于实现DES算法的硬件设备的设计也变得容易了。
3DES
(1).三重DES是为了增强DES的强度,将DES重复3次所得到的一种密码算法。
(2).3DES加密机制:
对上图说明:
- 明文经过三次DES处理才能变成最后的密文,由于DES**的长度实质上是56比特,因此三重DES的**长度就是56*3=168比特。
- 三重DES并不是进行三次加密(加密->加密->加密),而是加密->解密->加密的过程,这种设计是为了让3DES能够兼容普通的DES。当三重DES所有**都相同时,三重DES也就等于普通的DES了,这是因为在前两部加密->解密之后,得到的就是最初的明文,因此以前DES加密的密文,也就可以通过这种方式用三重DES来进行解密。
(3).三重DES解密机制
3DES的解密过程和加密过程正好相反,是以**3,**2,**1的顺序执行解密->加密->解密的过程。
AES
AES是取代其前任标准DES而成为新标准的一种对称密码算法。其是通过公开竞选而制定的,组织该劲炫活动的是美国的一家标准化机构。在评选AES的时候不仅仅考虑到了一种算法是否存在弱点,算法的速度,实现的容易行也都考虑在内了。
模式
ECB模式
ECB模式的全称是Electronic CodeBook,也称之为电子密码本模式,在ECB模式中,将明文分组加密之后的结果将直接称为密文分组。
ECB模式是所有模式中最简单的一种。ECB模式中,明文分组与密文分组是一一对应的关系,因此,如果明文中存在多个相同的明文分组,则这些明文分组最终将被转换为相同的密文分组。这样一来,只要观察一下密文,就可以知道明文中存在怎样的重复组合,并可以以此为线索破译密码,因此ECB模式是存在一定风险的。
CBC模式
CBC模式的全称是Cipher Block Chaining模式(密文分组链接模式),之所以叫这个名字,是因为密文分组是像链条一样互相链接在一起的。在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后在进行加密。
初始化向量:当加密第一个明文分组时,由于不存在“前一个密文分组”,因此需要实现准备一个长度为一个分组的比特序列来代替“前一个密文分组”,这个比特序列称为初始化向量,通常缩写为IV。
分析:
1. 假设CBC模式加密的密文分组中有一个分组损坏了(列入由于硬盘故障导致密文分组的值发生了改变),只要密文分组的长度没有发生变化,则解密时最多只会有2个分组收到数据损坏的影响。
- 假设CBC模式的密文分组中有一些比特缺失了(例如通信错误导致没有收到某些比特等),那么此时即便只确实一个比特,也会导致分组的长度发生改变,此后的分组发生错位,这样一来,缺失比特的位置止呕的密文分组也就全部无法解密了。
CFB模式
CFB模式的全称是Cipher FeedBack模式(密文反馈模式)。在CFB模式中,前一个密文分组被送回到密码算法的输入端。所谓反馈,这里指的就是返回输入端的意思。
d. OFB模式
OFB模式的全称是Output-Feedback模式(输出反馈模式)。在OFB模式中,密码算法的输出会反馈到密码算法的输入中。