Tags
1.CBC简介:
CBC(Cipher Block Chaining,密码分组链接)
2.CBC分组加解密原理:
选择一个初始向量Ⅳ,明文分组后,第一个明文分组与初始向量进行
XOR
,然后通过秘钥加密得出第一个密文块,第一个密文块与第二个明文块进行XOR
,然后通过秘钥加密得出第二个密文块,以此类推。
加密的具体步骤如下:
- 首先将数据按照8个字节一组进行分组得到D1、D2···Dn(若数据不是8的整数倍,用指定的PADDING数据补位)
- 第一组数据D1与初始化向量I异或后的结果进行DES加密得到第一组密文C1(初始化向量Ⅳ为全零)
- 第二组数据D2与第一组的加密结果C1异或以后的结果进行DES加密,得到第二组密文C2
- 之后的数据以此类推,得到Cn
- 按顺序连为C1C2C3......Cn即为加密结果。

解密具体步骤如下:
- 首先将数据按照8个字节一组进行分组得到C1C2C3......Cn
- 将第一组数据进行解密后与初始化向量I进行异或得到第一组明文D1(注意:一定是先解密再异或)
- 将第二组数据C2进行解密后与第一组密文数据进行异或得到第二组数据D2
- 然后依此类推,得到Dn
- 按顺序连为D1D2D3......Dn即为解密结果
tips
需要注意的是解密的结果并不一定是我们原来的加密数据,可能还含有你补得位,一定要把补位去掉才是你的原来的数据
3.CBC加密模式的缺点:
- 发送方和接收方均需要知道初始化向量 IV
- 加密过程是串行的,无法被并行化(解密过程可以从两个相邻的密文分组中即可解密得到一个明文分组,即解密过程可以被并行化),且同样不能抵御重放攻击
4.相关考点:
4.1.CBC比特翻转攻击:
- 已知明文攻击
- 如果有一组明密文,就可以做到通过修改密文,来使密文解密出来的特定位置的字符变成我们想要的字符