下载网站:Download | Node.jshttps://nodejs.org/en/download/
参考网站:Node.js安装与环境配置_各自安好、的博客-CSDN博客_nodejs安装及环境配置https://blog.csdn.net/qq_41465646/article/details/107656044
安装pyexecjs模块可以在python中运行调试好的js的代码。
MD5是一种被广泛使用的线性散列算法,可以产出一个128位(16字节)的散列值(hash value),用于确保信息传输完整的一致性。且MD5加密之后产生的是一个固定长度(32位或16位)数据。
JSMD5算法:
https://cdn.bootcdn.net/ajax/libs/blueimp-md5/1.0.1/js/md5.jshttps://cdn.bootcdn.net/ajax/libs/blueimp-md5/1.0.1/js/md5.js
MD5加密网站:
md5在线解密破解,md5解密加密 (cmd5.com)https://www.cmd5.com/
DES对称加密,是一种比较传统的加密方式,其加密运算解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密钥(称为对称密码),是一种对称加密算法。
1.加密后密文长度不同
(1)DES加密后密文长度是8的整数倍;
(2)AES加密后密文的长度是16的整数倍;
2.安全度不同
(1)一般情况下DES足够安全;
(2)如果要求更高可以使用AES;
3.DES和AES修改只需要修改:CryptoJS.DES =>CryptoJS.AES
一般情况下,在开发者工具中扣取JS代码时,如果没有password之类的关键字,可以直接search出encrypt和decrypt。
RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。
非对称加密需要两个密钥:
base64是一种用64个字符来表示任意二进制数据的方法。
base64使用 A--Z a--z 0--9 + / 这64个字符实现对数据的加密。
4.
(1)如果碰到加密算法不是很长,可以复制下所有的代码行;
(2)如果加密代码比较长 ,如果没有JS的基础;最好使用python去重构一下加密过程(需要得到
from Crypto.Cipher import AES
from cryptography.hazmat.primitives.padding import PKCS7
from cryptography.hazmat.primitives.ciphers import algorithms
def pkcs7_unpad(content):
"""
解密:Pkcs7的填充方式
"""
if not isinstance(content, bytes):
content = content.encode()
pad = PKCS7(algorithms.AES.block_size).unpadder()
pad_content = pad.update(content) + pad.finalize()
return pad_content
def aes_encrypt(res, key, iv=''):
# 转码 utf-8 字节 16进制
new_key = bytes(key, encoding='utf-8')
new_iv = bytes(iv, encoding='utf-8')
# 创建一个AES算法 秘钥 模式 偏移值
cipher = AES.new(new_key, AES.MODE_CBC, new_iv)
# 解密
data = cipher.decrypt(bytes.fromhex(res))
# Pkcs7的填充方式
return pkcs7_unpad(data)
Python重构DES加密算法
# pip install pyDes -i https://pypi.tuna.tsinghua.edu.cn/simple
from pyDes import des, CBC, PAD_PKCS5, ECB
import base64
def des_encrypt(password, key, iv='', model='CBC'):
'''
DES加密
:param password: 密码明文
:param key: 密钥
:param iv: 秘钥偏移量
:param model: 加密模式 CBC ECB
:return: 加密之后的数据
'''
# 创建des对象
if model == 'CBC':
# PAD_PKCS5 为填充方式
des_obj = des(key[:8].encode('utf-8'), CBC, iv.encode('utf-8'), padmode=PAD_PKCS5)
else:
# ECB加密模式 不需要iv秘钥偏移量
des_obj = des(key[:8].encode('utf-8'), ECB, padmode=PAD_PKCS5)
# 通过des对象处理数据
encrypt_content = des_obj.encrypt(password.encode('utf-8'))
result = base64.b64encode(encrypt_content).decode()
return result
Python重构RAS加密算法
# pip install pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as cry_pksc1_v1_5
import base64
def encrypto(pk, password):
"""
使用公钥对密码进行加密处理
:param pk: 公钥
:param password: 明文密码
:return: RAS加密之后的密码
"""
public_key = "-----BEGIN PUBLIC KEY-----\n{}\n-----END PUBLIC KEY-----".format(pk)
# 导入公钥 返回一个RSA秘钥对象
rsakey = RSA.importKey(public_key)
# 对需要加密的内容进行PKCS#1 v1.5加密
cipher = cry_pksc1_v1_5.new(rsakey)
# 使用公钥加密密码 密码必须是二进制
miwen_encode = cipher.encrypt(password.encode())
# 再使用Base64对类似字节的对象进行编码
cipher_text = base64.b64encode(miwen_encode).decode()
return cipher_text
5.安装JS外部资源库:
(1)cd进项目目录
(2)做国内资源映射:npm install ‐g cnpm ‐‐ registry=https://registry.npm.taobao.org
6.过掉无限debug:
7.在用python执行js代码的时候 碰着IndexError: list index out of range的解决方法: