我正在使用 Laravel 的encryptString方法来加密我网站上的一些数据。这使用 OpenSSL 的 256 位 AES-CBC 加密,没有任何序列化。我现在正在尝试用 Python 解密该数据,但我不断收到有关密钥长度的错误,并且似乎无法弄清楚原因。
Example data to decrypt: eyJpdiI6ImdxY0VcLzFodmpISFV4allSWmJDdEpRPT0iLCJ2YWx1ZSI6IkxXd0ZJaUd2bTUweW5pNm0wUjQwOFM2N1wvWEs5SlYrNB4xNlR7Qkh1U3FvPSIsIm1hYyI6Ijc5ZWM0YTYxYjljZGFiNzgwNjY2NDU1ZmQ5Yjc1ZmJlOGU4NzBkMjQzMzA3MmVhYzE3NzY4ZmU1MWIyMjZlOTQifQ==
Example Key to use for decryption (from laravel .env):
base64:/AZejP0lh3McL/+Vy5yZcADdTcR65qnx5Jqinuw7raK=
我改变了这些值,所以实际上用这些值解密不会提供任何真实数据,只是认为它会很好,例如。然后我尝试在 Python 3.7 中解密这些数据:
import base64
from Crypto.Cipher import AES
def decrypt(enc, key):
IV = 16 * '\x00'
decobj = AES.new(key, AES.MODE_CBC, IV)
data = decobj.decrypt(base64.b64decode(enc))
print(str(data.decode()))
if __name__ == "__main__":
key = b"/AZejP0lh3McL/+Vy5yZcADdTcR65qnx5Jqinuw7raK="
decrypt("eyJpdiI6ImdxY0VcLzFodmpISFV4allSWmJDdEpRPT0iLCJ2YWx1ZSI6IkxXd0ZJaUd2bTUweW5pNm0wUjQwOFM2N1wvWEs5SlYrNB4xNlR7Qkh1U3FvPSIsIm1hYyI6Ijc5ZWM0YTYxYjljZGFiNzgwNjY2NDU1ZmQ5Yjc1ZmJlOGU4NzBkMjQzMzA3MmVhYzE3NzY4ZmU1MWIyMjZlOTQifQ==", key)
看起来这应该可行,但是当我运行它时出现错误:ValueError: Incorrect AES key length (60 bytes)所以我不确定我做错了什么。我试过填充/取消填充数据/键,但这似乎没有改变任何东西。我想知道我是否从 Laravel 获得了错误的用于解密的密钥,但从我在链接文档中可以看出,它应该只是我的 .env 文件中的 APP_KEY 。
如果有人可以帮助我或为我指明正确的方向,那就太棒了!
这个问题对于其他类似问题是独一无二的,因为我主要是想弄清楚我是否从 Laravel 获得了正确的 AES 密钥,我实际上并不太需要解密帮助,我只是想我从拉拉维尔。
相关分类