前端CryptoJS AES加密与Python 后端解密

发布于 2022-09-11 22:29:19 字数 973 浏览 32 评论 0

最近在模仿一个网站,前端使用CryptoJS进行AES加密,但是不知道其后端如何进行解密的

前端加密代码

var password = $("#password_input").val()
var key = CryptoJS.MD5(Math.random() + "").toString();

for (
    t = CryptoJS.AES.encrypt(password, key, 
        { mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.ZeroPadding}
    ),
        password_encode = t.ciphertext.toString(CryptoJS.enc.Base64); 

$("#password_input").val() != password_encode; )
$("#password_input").val(password_encode);
$("#encrypt_iv").val(t.iv.toString(CryptoJS.enc.Base64)),
$("#encrypt_key").val(t.key.toString(CryptoJS.enc.Base64))

发送给后端的相关数据

# 以下为密码为 123456
'password':'YJukIxdk6KglzHVPfT3C8A==',
'encrypt_key':'LEbiyNapP8dIbaJ1VA7Iz3zBtk93ex8oB56+ei6yhGE=',
'encrypt_iv':'M79vpevBUppA5EtNy2mYBw=='

根据上述数据,如何使用Python来将加密后的 password还原成 123456 或者判断是否密码相同?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷荒 2022-09-18 22:29:19

这是我之前写的代码 你参考下

    from Crypto.Cipher import AES
    def add_to_16(text):
        while len(text) % 16 != 0:
            text += '\0'
        return str.encode(text)  # 返回bytes
    def decrypt_str(encrypted_text):
        key = 'xjjdBg#aUSINGfg@'  # 密码
        aes = AES.new(add_to_16(key), AES.MODE_ECB)
        return str(aes.decrypt(base64.decodebytes(bytes(encrypted_text, encoding='utf8'))).rstrip(b'\x0f').decode("utf-8"))
    

mode和padding需要你自己从js里面分析出来

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文