我正在尝试通过 Python 中的 PyCrypto 库进行 AES 加密。
我从用户那里读入密码,从文件中读入盐。然后我调用 PBKDF2 从文本密码生成密钥
PBKDF2(self.master_password, salt, 32)
然后我使用 Random.get_random_bytes 生成一个 IV
IV = Random.get_random_bytes(len(key))
然后我从 Crypto.Util 包创建一个计数器
ctr = Counter.new(32, IV)
然后我创建一个 AES 对象
e = AES.new(key, AES.MODE_CTR, counter=ctr)
但是,当我调用 e 进行加密时
e.encrypt(user_name)
我收到以下错误
CTR counter function returned string not of length 16
从我理解的方式来看,这个错误意味着块密码是 16 个字节,与我在
https://www.dlitz.net/software/pycrypto/api/current/Crypto.Cipher.AES-module.html
我尝试通过创建这样的 AES 对象将其更改为 32 字节块大小
AES_Encryptor = AES.new(key, AES.MODE_CTR, counter=ctr, block_size=32)
但后来我收到以下错误
'block_size' is an invalid keyword argument for this function
如果有人能指出我正确的方向,那就太好了。