AES-CBC非对称加密遇到问题
这是使用网页进行AES-CBC非对称解密,可以看到原文是D9047C0E0226218D913A1757DCDD8C7BF18AED768F2FBD814F78C23AB17E5C92
密钥是B77A9Fe7F323B5404902102257503C2F
iv偏移量也是B77A9Fe7F323B5404902102257503C2F
从而解密出的结果是{"videoId":52953}
但是我想通过python来实现这一步骤,于是我写了以下代码
from Crypto.Cipher import AES
import base64
def encrypt(text, key, iv):
"""
使用AES-CBC加密算法进行加密
"""
cipher = AES.new(key.encode(), AES.MODE_CBC, iv.encode())
ciphertext = cipher.encrypt(text.encode())
return base64.b64encode(ciphertext).decode()
text = "Hello, World!"
key = "B77A9Fe7F323B5404902102257503C2F"
iv = "B77A9Fe7F323B5404902102257503C2F"
ciphertext = encrypt(text, key, iv)
print(ciphertext)
但是出现了错误
ValueError: Incorrect IV length (it must be 16 bytes long)
于是,我留意到了网页的处理结果中,JS处理结果(由 CryptoJS 组件完成)是正常的,而另一个文本框中Java处理结果(由 JDK Cipher 组件完成)显示错误Wrong IV length: must be 16 bytes long,这和我python代码的错误一样
所以,我想让python模仿JS处理结果(由 CryptoJS 组件完成)的过程来解密或加密,或者直接调用js代码来实现这一功能。