【发布时间】:2021-08-07 11:01:52
【问题描述】:
我正在尝试将 Javascript 解密算法转换为 Python,但得到 ValueError: Incorrect AES key length (64 bytes)。
Javascript 版本:
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
<script>
//------------------------------------------------------------------------------------------------------------
//JS compatible decryption algo
//------------------------------------------------------------------------------------------------------------
function decrypt(cypher_text, keyIn, IVIn){
var iv = CryptoJS.enc.Hex.parse(IVIn);
var key = CryptoJS.enc.Hex.parse(keyIn);
var ct = CryptoJS.enc.Base64.parse(cypher_text);
var decrypted = CryptoJS.AES.decrypt({ciphertext: ct, salt: ""}, key, {iv: iv}).toString(CryptoJS.enc.Utf8);
return decrypted;
}
var key = "3166626465356135633961303634353662393166363430306633656365366162";
var ciphertext = "WCJcIFWu+3gC3nesXiiVcvXsVB104J10ZBVky2KIg1pXO9AWoI45ClkWg5EkW/3aBHGPcE5F7bXf8W0dtn8UcrJv7reR1dETQX9cgO7qYPonmNNrbdJprxR/2Z/e3AJGUGrhsjZC8IaiL3mM7+sHSAIm1lsusk9ZjJchpxm00CHQh698ILdG9+8/FCSNTJ3QTm9vy8BDmt8XmGl95ORcryUleBLfI2VpY9cNKzXLIYBBBD8OoDH8ASqh5LSb/PQTr96cYJJQG+3P+xvg623pJxuzMXgoqZuDXaoY082fzWGuaU6Pr8zKI6DxMjBX4j6sCo2Csilma6MG6zJWMQ6QWdG+ulilvLluolwiCECLqd4qbEeCBBJ7oagjr5sdCz2lNX/E";
var IV = "111d8a663094d022a548d5e79670be37";
var decrypted = decrypt(ciphertext, key, IV);
</script>
<!DOCTYPE html>
<html>
<body>
<script>
document.write(decrypted);
</script>
</body>
</html>
输出(Javascript 版本):
"[{\"record_index\":15145877,\"unit_id\":\"AWTIRDMVAPU397\",\"tag_id\":3461
Python 版本:
# decrypting the data
# decryption
key = "3166626465356135633961303634353662393166363430306633656365366162"
iv = "111d8a663094d022a548d5e79670be37"
ciphertext = "WCJcIFWu+3gC3nesXiiVcvXsVB104J10ZBVky2KIg1pXO9AWoI45ClkWg5EkW/3aBHGPcE5F7bXf8W0dtn8UcrJv7reR1dETQX9cgO7qYPonmNNrbdJprxR/2Z/e3AJGUGrhsjZC8IaiL3mM7+sHSAIm1lsusk9ZjJchpxm00CHQh698ILdG9+8/FCSNTJ3QTm9vy8BDmt8XmGl95ORcryUleBLfI2VpY9cNKzXLIYBBBD8OoDH8ASqh5LSb/PQTr96cYJJQG+3P+xvg623pJxuzMXgoqZuDXaoY082fzWGuaU6Pr8zKI6DxMjBX4j6sCo2Csilma6MG6zJWMQ6QWdG+ulilvLluolwiCECLqd4qbEeCBBJ7oagjr5sdCz2lNX/E"
#print(ciphertext)
cipher = AES.new(key, AES.MODE_CBC, iv)
decrypted = cipher.decrypt(ciphertext)
decryptedUnpad = unpad(decrypted, AES.block_size)
# print(decryptedUnpad)
content = decryptedUnpad
print(str(content))
输出(Python - ValueError: Incorrect AES key length (64 bytes)):
Traceback (most recent call last):
File "C:/Users/Admin/Desktop/TestProp/main.py", line 192, in <module>
cipher = AES.new(key, AES.MODE_CBC, iv)
File "C:\Users\Admin\Desktop\TestProp\venv\lib\site-packages\Crypto\Cipher\AES.py", line 232, in new
return _create_cipher(sys.modules[__name__], key, mode, *args, **kwargs)
File "C:\Users\Admin\Desktop\TestProp\venv\lib\site-packages\Crypto\Cipher\__init__.py", line 79, in _create_cipher
return modes[mode](factory, **kwargs)
File "C:\Users\Admin\Desktop\TestProp\venv\lib\site-packages\Crypto\Cipher\_mode_cbc.py", line 274, in _create_cbc_cipher
cipher_state = factory._create_base_cipher(kwargs)
File "C:\Users\Admin\Desktop\TestProp\venv\lib\site-packages\Crypto\Cipher\AES.py", line 93, in _create_base_cipher
raise ValueError("Incorrect AES key length (%d bytes)" % len(key))
ValueError: Incorrect AES key length (64 bytes)
我在这里错过了什么?
【问题讨论】:
标签: javascript python python-3.x encryption cryptography