Episode 02 对称密码基础

一、从文字密码到比特序列密码

1、使用对称密钥进行加密

为了使原来的明文无法被推测出来,就要尽可能地打乱密文,这样才能达到加密的目的。密文打乱的是比特序列,无论是文本,图片还是音乐,只要能够将数据转换比特序列,就能够对其进行加密了,但密文必须能够让接收者正确解密才行,需要仔细地设计出一种能够还原的混合方式。

现代的密码都是建立在计算机的基础之上的,这是因为现代的密码所处理的数据量非常大,而且密码也非常复杂,不借助计算机的力量就无法完成加密和解密的操作。

计算机的操作对象并不是文字,而是由0和1排列而成的比特序列。无论是文字、图像、声音、视频还是程序,在计算机中都是用比特序列来表示的。执行加密操作的程序,就是将表示明文的比特序列转换为表示密文的比特序列。

将现实世界中的东西映射为比特序列的操作称为编码(encoding)。例如常见的ASCⅡ。

2、XOR运算

XOR,exclusive or,异或。尽管看起来很复杂,但是运算本身一点都不难。

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

0 XOR 0 = 0

扫描二维码关注公众号,回复: 16099522 查看本文章

0 XOR 1 = 1

1 XOR 0 = 1

1 XOR 1 = 0

比特序列的XOR:只需要将其中每个相对应的比特进行XOR运算就可以了。和加发运算不同的是,XOR中不需要进位。

3、DES

DES,Data Encryption Standard,是1977年美国联邦信息处理标准(FIPS)中所采用的一种对称密码。一直以来被美国及其他国家的政府和银行等广泛使用。

然而,随着计算机的进步,现在DES已经可以被暴力破解,强度大不如以前了。由于DES的密文可以被在短时间内被破译,因此除了用它来解密以前的密文以外,现在我们不应该再使用DES了。

3.1DES加密和解密

DES将64比特的明文加密成64比特的密文,密钥长度是56比特。尽管从规格上来说,DES的密钥长度是64比特,但由于每隔7比特会设置一个用于错误检查的比特,因此实质上其密钥长度是56比特。

DES是以64比特的明文(比特序列)为一个单位来进行加密的,这个64比特的单位称为分组。一般来说,以分组为单位进行处理的密码算法称为分组密码(block cipher),DES就是分组密码的一种。

DES每次只能加密64比特的数据,如果要加密的明文比较长,就需要对DES加密进行迭代(反复),而迭代的模式称为模式(mode)。

4、三重DES

现在DES已经可以在现实的时间内被暴力破解,因此我们需要一种用来替代DES的分组密码,三重DES就是出于这个目的被开发出来的。

什么是三重DES?triple-DES是为了增加DES的强度,将DES重复3次所得到的一种密码算法,也称为TDEA(Triple Data Encryption Algorithm),通常缩写为3DES。

4.1三重DES的加密

三重DES的加密机制如图所示:

明文经过三次DES处理后,才能变成最终的密文,由于DES的密钥长度实质上是56比特,因此三重DES密钥的长度是56X3=168比特。

从上图我们可以发现,三重DES并不是进行三次DES加密(加密->加密->加密),而是加密->解密->加密的过程。在加密算法中加入解密操作让人感觉很不可思议,实际上这是IBM公司设计出来的,目的是为了让三重DES能够兼容普通的DES。单三重DES的三把密钥完全相同时,三重DES也就相当于普通DES了。因此,以前用DES加密的密文,也就可以通过这种方式用三重DES来进行解密。也就是说,三重DES对DES具备向下兼容性。

在DES的部分我们已经提到过,DES的加密和解密过程只是改变了子密钥的顺序,而实际进行的处理是相同的。三重DES的解密过程正好相反,是以密钥3、密钥2、密钥1的顺序执行解密->加密->解密的操作。

 

猜你喜欢

转载自blog.csdn.net/Dove_Knowledge/article/details/128640449