收藏
回答

为什么从平台获得的信息解密失败?

机器人ID
accident08259

使用的python,raise ValueError("Padding is incorrect.")。 我在想是不是padding最后要移除一个等号,而我没有移除的缘故

encrypted_data = request.get_data(as_text=True)
raw_data = decrypt(encrypted_data)
aes_key = "yZRzfik2tSUTGv3fBblS2R8JpnL2W1daCOUQZaN6012="
#获得b64编码
key = base64.b64decode(self.aes_key)
iv = key[:16]

def decrypt(ciphertext: str) -> dict:
    missing_padding = len(ciphertext) % 4
    if missing_padding:
        ciphertext += '=' * (4 - missing_padding)
    decoded = base64.b64decode(ciphertext)
    cipher = AES.new(key, AES.MODE_CBC, iv)
    decrypted = cipher.decrypt(decoded)
    if len(decrypted) % AES.block_size != 0:
        raise ValueError(f"数据长度 {len(decrypted)} 不是 {AES.block_size} 的倍数")

    #移除PKCS7填充, 在这一部分报错:raise ValueError("Padding is incorrect.")
    unpadded_data = unpad(decrypted, AES.block_size)

    # 7. 解析JSON
    return json.loads(unpadded_data.decode('utf-8'))
回答关注问题邀请回答
收藏

1 个回答

  • 管理员LT
    管理员LT
    05-09

    您好 padding 算法应该使用 pkcs5 算法。

    05-09
    有用
    回复
登录 后发表内容
问题标签