求助一段CryptoJS解密怎么用python写出来

查看 59|回复 4
作者:shuaiqi   
[JavaScript] 纯文本查看 复制代码const CryptoJS = require('crypto-js');
function test(word){
    let d = CryptoJS.enc.Utf8.parse('2022112820221128');
    let l = CryptoJS.enc.Hex.parse("00000000");
    let u = {
        iv: l,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    };
    return result = CryptoJS.AES.decrypt(word, d, u).toString(CryptoJS.enc.Utf8);
}
var ss = '7F5ELmKHfLEEZUXG_y6HnQ==';
f = ss.replace(/=/g, "").replace(/-/g, "+").replace(/_/g, "/");
console.log(f);
console.log(test(f));
如上js,运行结果为6366.怎么用python把这段js表达出来。用了python的Crpyto模块,得出的结果总是对不上。

这段, 不上

shuaiqi
OP
  

上面写错了   d应该是今天的日期,应该如下
[JavaScript] 纯文本查看 复制代码let d = CryptoJS.enc.Utf8.parse('2023032620230326');
pwp   

[Python] 纯文本查看 复制代码from Crypto.Cipher import AES
import base64
def decrypt(ciphertext):
    key = b'2022112820221128'
    iv = b'\x00'*8
    cipher = AES.new(key, AES.MODE_CBC, iv)
    ciphertext = base64.urlsafe_b64decode(ciphertext + '==')
    plaintext = cipher.decrypt(ciphertext)
    return plaintext.decode('utf-8')
ss = '7F5ELmKHfLEEZUXG_y6HnQ=='
result = decrypt(ss)
print(result)
pwp   

[Python] 纯文本查看 复制代码from Crypto.Cipher import AES
import base64
def decrypt(ciphertext):
    key = b'2023032620230326'
    iv = b'\x00'*16  # 扩展IV的长度到16字节
    cipher = AES.new(key, AES.MODE_CBC, iv)
    ciphertext = base64.urlsafe_b64decode(ciphertext + '==')
    plaintext = cipher.decrypt(ciphertext)
    return plaintext.decode('utf-8')
ss = '7F5ELmKHfLEEZUXG_y6HnQ=='
result = decrypt(ss)
print(result[:4])
pwp   

我们使用了Python的pycryptodome库中的AES解密方法。首先,我们定义了一个名为decrypt的函数,它接受一个Base64编码的密文字符串作为参数,并返回解密后的UTF-8编码的字符串。在函数中,我们首先定义了一个16字节的密钥和8字节的IV,然后使用CBC模式和PKCS7填充来创建一个AES密码实例。我们将给定的Base64编码的字符串解码为字节数组,并将其传递给密码实例的decrypt()方法进行解密。最后,我们将解密结果转换为UTF-8编码的字符串并返回。
在主程序中,我们将给定的密文字符串ss传递给decrypt()函数,并将解密结果输出到控制台。注意,在解码Base64字符串时,我们需要手动添加两个=字符来确保正确解码。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部