亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 AES 生成的十六進制從 aes-js(Javascript) 解密到 pycryptodome

將 AES 生成的十六進制從 aes-js(Javascript) 解密到 pycryptodome

侃侃爾雅 2023-07-18 15:44:41
所以我試圖解密我在 Python 中用 JS 加密的字符串。我用過aes-js圖書館。我明白了:caba6777379a00d12dcd0447015cd4dbcba649857866072d。這是我的JS代碼:var key = aesjs.utils.utf8.toBytes("ThisKeyIs16Bytes");console.log(`Key (bytes): ${key}`);var text = 'psst... this is a secret';var textBytes = aesjs.utils.utf8.toBytes(text);var aesCtr = new aesjs.ModeOfOperation.ctr(key, new aesjs.Counter(5));var encryptedBytes = aesCtr.encrypt(textBytes);var encryptedHex = aesjs.utils.hex.fromBytes(encryptedBytes);console.log(`Hex: ${key}`);我已經在 python 中嘗試了一些東西,但這就是我目前所擁有的:from Crypto.Cipher import AESciphered_data = bytearray.fromhex('caba6777379a00d12dcd0447015cd4dbcba649857866072d')key = b'ThisKeyIs16Bytes'cipher = AES.new(key, AES.MODE_CTR)original_data = cipher.decrypt(ciphered_data)print(original_data.decode("utf-8", errors="ignore"))但我收到的只是一團糟。=*??ve?-:tQ?#?。
查看完整描述

1 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

使用CTR模式。在 Pyton 代碼中,缺少計數器的初始化,即正確起始值的定義,例如

...
cipher?=?AES.new(key,?AES.MODE_CTR,?nonce?=?b'',?initial_value?=?5)
...

或者使用一個Counter對象:

from Crypto.Util import Counter

...

counter = Counter.new(128, initial_value = 5)

cipher = AES.new(key, AES.MODE_CTR, counter = counter)

...

通過這兩個更改之一,解密就可以進行。


查看完整回答
反對 回復 2023-07-18
  • 1 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號