直接回答:ECB 每块独立加密,相同的明文块会得到相同的密文块,所以加密图片时还能看出原图轮廓;CBC 把上一块的密文参与下一块的运算,同样的明文块结果也不同,更安全但需要初始向量。
DES加密算法中,ECB和CBC模式有什么区别?
ECB和CBC模式的区别
ECB模式
ECB(电子密本方式)其实非常简单,就是将数据按照8个字节一段进行DES加密或解密得到一段段的8个字节的密文或者明文,最后一段不足8个字节(一般补0或者F),按照需求补足8个字节进行计算(并行计算),之后按照顺序将计算所得的数据连在一起即可,各段数据之间互不影响。
优点:
简单;
有利于并行计算;
误差不会被传递;
缺点:
不能隐藏明文的模式;
可能对明文进行主动攻击;
CBC模式:
优点:
- 不容易主动攻击,安全性好于ECB,是SSL、IPSec的标准;
缺点:
- 不利于并行计算;
- 误差传递;
- 需要初始化向量IV;
CBC(密文分组链接方式)有点麻烦,它的实现机制使加密的各段数据之间有了联系。其实现的机理如下: 加密步骤如下:
- 首先将数据按照8个字节一组进行分组得到D1D2…Dn(若数据不是8的整数倍,用指定的PADDING数据补位)
- 第一组数据D1与初始化向量I异或后的结果进行DES加密得到第一组密文C1(初始化向量I为全零)
- 第二组数据D2与第一组的加密结果C1异或以后的结果进行DES加密,得到第二组密文C2
- 之后的数据以此类推,得到Cn
- 按顺序连为C1C2C3…Cn即为加密结果。
AES五种加密模式(CBC、ECB、CTR、OCF、CFB)
1.电码本模式(Electronic Codebook Book (ECB)
这种模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密。
2.密码分组链接模式(Cipher Block Chaining (CBC))
这种模式是先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。
3.计算器模式(Counter (CTR))
计算器模式不常见,在CTR模式中, 有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密,但是在计算器不能维持很长的情况下,密钥只能使用一次。
4.密码反馈模式(Cipher FeedBack (CFB))
这种模式较复杂
5.输出反馈模式(Output FeedBack (OFB))
这种模式较复杂
1 | // crypto-js.min.js |
这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。