首页 > 解决方案 > 无法解密python中的数据来自Angular的加密数据

问题描述

角度加密:

encrypt(data){
var key = CryptoJS.enc.Hex.parse('824601be6c2941fabe7fe256d4d5a2b7');
var iv  = CryptoJS.enc.Hex.parse('1011121314151617'); 
var encrypted = CryptoJS.AES.encrypt(JSON.stringify(data), key, { iv: iv, mode: CryptoJS.mode.CBC });
encrypted =encrypted.toString();
encrypted = (iv+encrypted).toString(CryptoJS.enc.Base64);
return encrypted
}

从 Python 解密:

COMMON_ENCRYPTION_KEY=b'824601be6c2941fabe7fe256d4d5a2b7'
COMMON_16_BYTE_IV_FOR_AES=b'1011121314151617'

def decrypt_with_common_cipher(self, ciphertext):
    raw_ciphertext = base64.b64decode(ciphertext)
    print("raw_ciphertext", raw_ciphertext)
    
    try:
        AES.new(self.COMMON_ENCRYPTION_KEY, AES.MODE_CBC, self.COMMON_16_BYTE_IV_FOR_AES).decrypt(raw_ciphertext)[:16]
    except Exception as e:
        print(e)

角度加密工作正常我得到了加密值示例:1011121314151617HsV4+WIGfm1VSRFZbFqSPo5ZKDjDgS36/L8JTDyYH0rkDigS7lSXaQfgCWrKlw9MzKqlJ66eQWSVNwWAotGyZg==。但是当我尝试从 Python 使用相同的密钥和 IV 进行解密时。我收到错误:数据必须在 CBC 模式下填充到 16 字节边界

标签: pythonangular9cryptojs

解决方案


推荐阅读