本人在java中运行的一段AES加密代码,采用的是GCM加密模式,出于某种原因需要将这部分代码移植到python项目中去,但发现python自带的加密库中不支持GCM这一加密模式,经过google之后,发现第三方加密库pyca/cryptography支持,所以记录下来
一、GCM加密模式的介绍
GCM中的G就是指GMAC,C就是指CTR。
GCM可以提供对消息的加密和完整性校验,另外,它还可以提供附加消息的完整性校验。在实际应用场景中,有些信息是我们不需要保密,但信息的接收者需要确认它的真实性的,例如源IP,源端口,目的IP,IV,等等。因此,我们可以将这一部分作为附加消息加入到MAC值的计算当中。下图的Ek表示用对称秘钥k对输入做AES运算。最后,密文接收者会收到密文、IV(计数器CTR的初始值)、MAC值。
image
之所以选用GCM,也就是因为它比常用的CBC加密模式更加安全和完善,以后建议同学们新开发的软件可以考虑采用这种方式
二、Python(3)实现
1、安装cryptography