对称加密

对称加密的意思是加密和解密用的同一个密钥,常见的对称加密算法有:AES,DES 和 3DES;这里我们主要讨论 AES 和 DES。

测试网站:https://the-x.cn/cryptography/Aes.aspx

AES

pip install pycrypto  => 很多人装不上....
pip install pycryptodome => 可以装..
安装之后依然不好用.. 发现只有crypto   而Crypto用不了. 
去模块的安装目录. 改一下文件名, 把小写的c改成大写的C
  • 长度
    • 16:AES-128
    • 24:AES-192
    • 32:AES-256
  • MODE 加密模式
    • ECB:一种基础的加密方式,密文被分割成分组长度相等的块,然后单独一个一个加密,一个一个输出组成的密文;
    • CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或或操作后再加密,这样做的目的是增强破解难度;
    • CFB/OFB:实际上是一种反馈模式,目的也是增强破解版的难度;

FCB 和 CBC 的加密结果是不一样的,两者的模式不同,而且 CBC 会在第一个密码块运算时加入一个初始化向量。

from Crypto.Cipher import AES

aes = AES.new(b'balabalabalabala', mode=AES.MODE_CBC,
              IV=b'0102030405060708')
data = "吃饭"

data_bs = data.encode("utf-8")

pad_len = 16 - len(data_bs) % 16
data_bs += (pad_len * chr(pad_len)).encode("utf-8")

bs = aes.encrypt(data_bs)

print(bs)

# bs = b'\xd8\x949^\xaf\xc6;\xa9\xb8\xaf\xd1\xa5\xf5\xd0\xf7n'
res = aes.decrypt(bs)

print(res.decode("utf-8"))

DES