为了账号安全,请及时绑定邮箱和手机立即绑定

在 Laravel 中编码,在 Python 中解码

在 Laravel 中编码,在 Python 中解码

萧十郎 2021-07-04 04:16:55
我正在使用 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 base64from Crypto.Cipher import AESdef 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 密钥,我实际上并不太需要解密帮助,我只是想我从拉拉维尔。
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信