ciphertext
以下代码每次执行时都会产生不同的结果,这不应该发生,因为每次执行时传递的键和数据都是相同的。
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from base64 import b64encode, b64decode
key = '/I02fMuSSvnouuu+/vyyD7NuSEVDB/0gte/z50dM0b4='
data = 'hello world!'
cipher = AES.new(b64decode(key), AES.MODE_CBC)
padded_data = pad(data.encode(), cipher.block_size)
print(b64encode(padded_data))
# b'aGVsbG8gd29ybGQhBAQEBA=='
ciphertext = cipher.encrypt(padded_data)
print(b64encode(ciphertext))
# b'rEHH0MWIWCWUldjYBco9TA=='
ciphertext = cipher.encrypt(padded_data)
print(b64encode(ciphertext))
# b'FTpLrkZttDxMlpre3Kq8qQ=='
我实际上是在尝试将示例 PHP 代码复制到 Python,PHP 代码给出相同的输出,而我的 Python 代码给出不同的输出,没有一个与 PHP 匹配。
Python 版本 3.6.x
PyCryptoDome 版本 3.4.7