分组密码的加密模式
1. 按位异或
- 第一步需要将数据转换为二进制
2. ECB - Electronic Code Book,电子密码本模式
ECB模式是简单的加密模式,明文数据被分成固定大小的块,并且每个块被单独加密,每个块的加密和解密都是独立的,且使用相同的方法进行加密,所以可以进行并行计算,这种模式下有一个块被破解了,用相同的方法就可以破解其他块得到明文数据。安全性比较差,适用于数据较少的情形,加密前需要把明文数据填充到块大小的整数倍
go接口中不提供该模式3.04
总结:
- 特点:简单,效率高,密文有规律,容易被破解
- 最后一个明文分组必须要填充
- 不需要初始化向量
3. CBC - Cipher Block Chaining, 密码块链
CBC模式中每个分组要先和前一个分组加密后的数据进行异或运算,然后再进行加密,第一个数据块进行加密之前需要使用初始化向量IV进行异或运算。CBC模式是一种最常用的加密模式,它主要缺点是加密是连续的,不能并行处理,并且与ECB一样消息块必须填充到块大小的整数倍
总结:
- 特点:密文没有规律,经常使用的加密方式
- 最后一个明文分组需要填充
- 需要一个初始化向量,并且加解密使用的初始化向量必须相同
4. CFB - Cipher FeedBack,密文反馈模式
CFB模式中,前一个分组的密文加密后和当前分组的明文进行异或运算生成当前分组的密文,第一步对初始化向量进行加密,并且该模式不需要进行数据填充,不需要填充的还有后面说到的OFB模式和CTR模式
总结:
- 特点:密文没有规律,明文分组是和数据流进行按位异或,最终生成密文
- 需要一个初始化向量,并且加解密使用的初始化向量必须相同
- 不需要填充
5. OFB - Output FeedBack,输出反馈模式
在OFB模式中,密码算法的输出会反馈到密码算法的输入中,即上一个密码算法的输出是当前分组密码算法的输入。OFB模式并不通过密码算法对明文直接进行加密,而是通过明文分组和密码算法的输出进行异或来产生密文分组的,在这一点上OFB和CFB模式非常相似
总结:
- 特点:密文没有规律,明文分组是和数据流进行按位异或,最终生成密文
- 需要一个初始化向量,并且加解密使用的初始化向量必须相同
- 不需要填充
6. CTR - CountTeR,计数器模式
CTR模式是一种通过将逐次累加的计数器进行加密来生成密钥流的流密码,最终的密文分组是通过将计数器加密得到的比特序列,与明文分组进行异或而得到的
总结:
- 特点:密文没有规律,明文分组是和数据流进行按位异或,最终生成密文
- 不需要初始化向量
- 不需要填充
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。