Python AES加密 与 JS AES加密

import execjs
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex

def js_aes(text):
    jscode = """
    function encryptByAES(pwd) {
        var cryptoJS = require("crypto-js");
        
        let i = cryptoJS.enc.Utf8.parse("12345678901234561234567890123456");
        let t = cryptoJS.enc.Utf8.parse(pwd);
        let o = cryptoJS.enc.Utf8.parse("1234567890123456");

        return cryptoJS.AES.encrypt(t, i, {
                    iv: o,
                    mode: cryptoJS.mode.CBC,
                    padding: cryptoJS.pad.Pkcs7
                }).ciphertext.toString()
    }
    """
    ctx = execjs.compile(jscode)
    encrypto = ctx.call("encryptByAES",text)

    return encrypto
    


def py_aes(text):
    key = b"12345678901234561234567890123456"   #长度必须为16
    text = text.encode("utf-8")

    cryptor = AES.new(key,AES.MODE_CBC,iv = b"1234567890123456")  
    pad = 16 - len(text) % 16
    text = text + (chr(pad) * pad).encode("utf-8")   #相当于JS里面的 padding: cryptoJS.pad.Pkcs7
    ciphertext = cryptor.encrypt(text)

    return b2a_hex(ciphertext).decode("utf-8")


text = "!abc123你好"
js_res = js_aes(text)
py_res = py_aes(text)

print (js_res ==py_res)
print (js_res)
print (js_res)

 

欢迎关注本人微信公众号,会分享更多的干货:

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值