密码学-对称加密体系-DES-CBC模式

CBC模式

CBC模式的全称是:Cipher Block Chaining模式(密文分组链接模式),在CBC模式中,首先将明文分组与前一个密文分组进行异或运算,然后再进行加密。

初始化向量:

当加密第一个明文分组时,由于不存在前一个密文分组,因此需要准备一个长度为一个分组的比特序列来代替前一个密文分组,通常缩写为IV

分析:

1.假设CBC模式加密的密文分组中有一个分组损坏了(由于硬盘故障导致密文分组的值发生了改变),只要密文分组的长度没有发生变化,则解密时最多只会有2个分组的数据解密失败。

2.假设CBC模式的密文分组中有一些比特缺失(可能由于网络故障导致的),那么此时即使只有1比特缺失,也会导致分组长度发生改变,此时该分组之后的所有分组解密都会失败。

  • CBC模式加密

第一步:创建cipher.Block接口,其对应的就是一个加密的块
src:待加密的明文 /  key:**  / 返回值:加密之后的密文

密码学-对称加密体系-DES-CBC模式

第二步:对最后一组明文进行数据填充(介绍2种),创建utils.go封装函数

方法一:

密码学-对称加密体系-DES-CBC模式

方法二:

这张方法适用范围更广,填充方式与方法一类似,只是去除填充的方式不同

密码学-对称加密体系-DES-CBC模式

 

第三步:调用utils里面的填充函数并进行加密

注意:开辟切片用于存储明文src加密之后的密文dst,src和dst长度一样

密码学-对称加密体系-DES-CBC模式

初始化向量要8字节,创建CBC的加密模式,等同于上面的创建CBC的加密模式

密码学-对称加密体系-DES-CBC模式

第四步:调用函数并打印出来(2种打印方式)

密码学-对称加密体系-DES-CBC模式

结果:

密码学-对称加密体系-DES-CBC模式


  • CBC模式解密

使用des算法解密
src待解密的密文     key:**,必须和加密是使用的**一样        返回值:解密之后的明文

密码学-对称加密体系-DES-CBC模式

调用函数:

密码学-对称加密体系-DES-CBC模式

结果:

密码学-对称加密体系-DES-CBC模式


CBD模式加密与解密代码对比

加密比解密仅多一行代码,其余相同
密码学-对称加密体系-DES-CBC模式