美文网首页
Python对Crypto解密

Python对Crypto解密

作者: Oct1a | 来源:发表于2021-03-06 21:03 被阅读0次

有网站在前端页面上对某些数据进行js加密后渲染填充的,通过抓包拿到解密的方法,但有大量的数据想通过python来解密转换,所以就将js转python语法来写了。

原JS加密方法

var CryptoJS = require('crypto-js');

var IV = '8NONwyJtHesysWpM';
var KEY = '1234567898882222';

function decrypt(String) {
  var key = CryptoJS.enc.Utf8.parse(KEY);
  var iv = CryptoJS.enc.Utf8.parse(IV);
  var decrypted = CryptoJS.AES.decrypt(str, key, {
    iv: iv,
    padding: CryptoJS.pad.Pkcs7
  });
  return decrypted.toString(CryptoJS.enc.Utf8);
}

var data = 'lJ3vNKkzYYDUVuG5BbRjqXBE+5Cqa8xpR/H18ti+rAM=';
var decode = decrypt(data);
console.log(decode);

转Python的库解密

python安装Crypto过程中可能会出现问题,所以在window系统中需pycryptodome这个库解决,pycrypto、pycrytodome和crypto是一个东西,crypto在python上面的名字是pycrypto,它是一个第三方库,但是已经停止更新三年了,所以不建议安装这个库;

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import base64
from Crypto.Cipher import AES

IV = "8NONwyJtHesysWpM"
KEY = '1234567898882222'

class Crypto_Test(object):
    def __init__(self):
        self.key = KEY
        self.mode = AES.MODE_CBC

    #解密函数
    def decrypt(self, text):
        decode = base64.b64decode(text)
        cryptor = AES.new(self.key, self.mode,IV)
        text = cryptor.decrypt(decode)
        return text

if __name__ == '__main__':
    data = "lJ3vNKkzYYDUVuG5BbRjqXBE+5Cqa8xpR/H18ti+rAM="
    aes = Crypto_Test()
    res = aes.decrypt(data)
    print(res)

相关文章

网友评论

      本文标题:Python对Crypto解密

      本文链接:https://www.haomeiwen.com/subject/wrvsqltx.html