对称加密,又称为 共享密钥加密算法,是指加密和解密方使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。

对称加密算法

DES

DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS)

DES的加密和解密

DES是一种将64bit(8Byte)的明文加密成64bit的密文的对称密码算法,它的密钥长度是56比特从规格上来说,DES的密钥长度是64bit,但由于每隔7bit会设置一个用于错误检查的比特,因此实质上其密钥长度是56bit

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

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

3DES

3DES(Triple DES):是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。

3DES是基于计算机的运算能力的增强,基于DES算法,增强秘钥进行多绪加密,而不是一种块密码算法。

AES

AES(Advanced Encryption Standard):高级加密标准,是美国联邦政府采用的一种区块加密标准。

分组密码模式

blockcipherblocklength

例如,DES和3DES的分组长度都是64比特。这些密码算法一次只能加密64比特的明文.并生成64比特的密文。

AES的分组长度可以从128比特、192比特和256比特中进行选择。当选择128比特的分组长度时,AES一次可加密128比特的明文,并生成128比特的密文。

分组密码算法只能加密固定长度的分组,但是我们需要加密的明文长度可能会超过分组密码的分组长度,这时就需要对分组密码算法进行迭代,以便将一段很长的明文全部加密。而迭代的方法就称为分组密码的模式(mode)

分组密码的模式有很多种类,分组密码的主要模式有以下5种:

明文与密文分组

  • **明文分组: **是指分组密码算法中作为加密对象的明文。明文分组的长度与分组密码算法的分组长度是相等的。
  • **密文分组: **是指使用分组密码算法将明文分组加密之后所生成的密文。

ECB模式:Electronic Code Book mode(电子密码本模式)

ECB是最简单的加密模式,明文消息被分成固定大小的块(分组),并且每个块被单独加密。 每个块的加密和解密都是独立的,且使用相同的方法进行加密,所以可以进行并行计算,但是这种方法一旦有一个块被破解,使用相同的方法可以解密所有的明文数据,安全性比较差。 适用于数据较少的情形,加密前需要把明文数据填充到块大小的整倍数。


使用ECB模式加密时,相同的明文分组会被转换为相同的密文分组,因此ECB模式也称为电子密码本模式当最后一个明文分组的内容小于分组长度时(如一个分组8bit),需要用一特定的数据进行填充(padding),让值一个分组长度等于分组长度

ECB模式是所有模式中最简单的一种。ECB模式中,明文分组与密文分组是一一对应的关系,因此,如果明文中存在多个相同的明文分组,则这些明文分组最终都将被转换为相同的密文分组。这样一来,只要观察一下密文,就可以知道明文中存在怎样的重复组合,并可以以此为线索来破译密码,因此ECB模式是存在一定风险的。

CBC模式:Cipher Block Chaining mode(密码分组链接模式)

CFB模式:Cipher FeedBack mode(密文反馈模式)

OFB模式:Output FeedBack mode(输出反馈模式)

  • CTR模式:CounTeR mode(计数器模式)