对称加解密算法分为:分组加密算法、流加密算法;
目前国际上使用的对称加密算法主要有:
另外,还有我国自主研发的已经公布的SM4算法;
名称 | 英文 |
---|---|
DES | (Data Encryption Standard) |
3DES | (Triple DES) |
AES | (Advanced Encryption Standard) |
1. DES
DES算法全称为Data Encryption Standard,即数据加密算法,DES加密算法是IBM公司于1975年研究成功并公开发表的。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据。
对称加密算法,明文按照64位进行分组,密钥长64位,但是实际上只用56位参与DES运算,第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有一个奇数位。分组后的明文和56位的密钥按位替代或交换的方法形成密文。
2. 3DES
3DES(Triple DES)是三重数据加密算法(TDEA)密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。
3. AES
AES:又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。用来替代原先的DES。目前已然成为对称密钥加密中的算法之一。
4. RC2
RC2是由密码学家Ron Rivest设计的一种传统对称分组加密算法,它可作为DES算法的建议替代算法。它的输入和输出都是64比特。密钥的长度是从1字节到128字节可变。
5. RC4
RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ronald Rivest在1987年设计的密钥长度可变的流加密算法簇。由于RC4核心部分的S-box长度可为任意,该算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性。
6. RC5
RC5分组密码算法是1994由麻萨诸塞技术研究所的Ronald L. Rivest教授发明的,并由RSA实验室分析。它是参数可变的分组密码算法,三个可变的参数是:分组大小、密钥大小和加密轮数。在RC5算法中使用了三种运算:异或、加和循环。
7. SM4
SM4为对称算法,密钥长度和分组长度均为128位。
SMS4的标准描述:加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,
解密轮密钥是加密轮密钥的逆序。
对称加密算法还有应用模式,如下:
应用模式
加密模式(英文名称及简写) | 中文名称 |
---|---|
Electronic Code Book(ECB) | 电子密码本模式 |
Cipher Block Chaining(CBC) | 密码分组链接模式 |
Cipher Feedback Mode(CFB) | 加密反馈模式 |
Output Feedback Mode(OFB) | 输出反馈模式 |
ECB:最基本的加密模式,也就是通常理解的加密,相同的明文将永远加密成相同的密文,无初始向量,容易受到密码本重放攻击,一般情况下很少用。
CBC:明文被加密前要与前面的密文进行异或运算后再加密,因此只要选择不同的初始向量,相同的密文加密后会形成不同的密文,这是目前应用最广泛的模式。CBC加密后的密文是上下文相关的,但明文的错误不会传递到后续分组,但如果一个分组丢失,后面的分组将全部作废(同步错误)。
CFB:类似于自同步序列密码,分组加密后,按8位分组将密文和明文进行移位异或后得到输出同时反馈回移位寄存器,优点最小可以按字节进行加解密,也可以是n位的,CFB也是上下文相关的,CFB模式下,明文的一个错误会影响后面的密文(错误扩散)。
OFB:将分组密码作为同步序列密码运行,和CFB相似,不过OFB用的是前一个n位密文输出分组反馈回移位寄存器,OFB没有错误扩散问题。