python - 无法解密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 字节边界
解决方案
推荐阅读
- react-native - React Navigation v5 setOptions 不起作用
- rasa - 设置 rasa restart 的操作
- php - 在反应应用程序中通过 php 服务器从 sql 数据库中获取数据
- firebase - 具有 GoDaddy 自定义域的 Firebase webapp 不显示 HTTPS
- java - 为什么我不能在 Java 中将(字节)数据类型转换为(短)数据类型
- microsoft-graph-api - 通过电子邮件发送消息时如何获取“来自”的频道消息?
- vector - Rust 嵌套数据结构的可变性
- spring-boot - 使用 Spring Boot 获取数据并将其发布到 facebook 中的页面
- javascript - 如果特定月份显示内容
- lwc - 闪电进度指示器图标