使用的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'))
您好 padding 算法应该使用 pkcs5 算法。