破解JS常见加密

mac2022-06-30  20

文章目录

JS破解常见加密解密方法1. URL编码2. Base64编码3. MD5加密特点4. Python加密库PyCryptodome安装与导入AES(对称加密)(msg, key) RSA非对称加密

JS破解常见加密解密方法

我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。

所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错。

将字符串和Bytes互相转换可以使用encode()和decode()方法。

1. URL编码

一般中文是不允许出现在url中的, 这就需要用到url编码和解码了

from urllib import parse url = "https://www.baidu.com/s?ie=UTF-8&wd=风景" # url编码 parse_encrypt = parse.quote(url) # url解码 parse_decrypt = parse.unquote(parse_encrypt) print(parse_encrypt) print(parse_decrypt) >>> https%3A//www.baidu.com/s%3Fie%3DUTF-8%26wd%3D%E9%A3%8E%E6%99%AF https://www.baidu.com/s?ie=UTF-8&wd=风景

2. Base64编码

在js加密解密的时候经常会用到base64编码解码的情况

import base64 url = 'http://mvvideoshare2.meitudata.com/5d6b32824ae722zczc1zid7892_H264_MP5d6b39.mp4?k=cf8ccd3e12648d8bb869bff2f97344a6&t=5d9a67b4' # base64编码 base64_encode = base64.b64encode(url.encode()) # base64解码 base64_decode = base64.b64decode(base64_encode) print(base64_encode) print(base64_decode) >>> b'aHR0cDovL212dmlkZW9zaGFyZTIubWVpdHVkYXRhLmNvbS81ZDZiMzI4MjRhZTcyMnpjemMxemlkNzg5Ml9IMjY0X01QNWQ2YjM5Lm1wND9rPWNmOGNjZDNlMTI2NDhkOGJiODY5YmZmMmY5NzM0NGE2JnQ9NWQ5YTY3YjQ=' b'http://mvvideoshare2.meitudata.com/5d6b32824ae722zczc1zid7892_H264_MP5d6b39.mp4?k=cf8ccd3e12648d8bb869bff2f97344a6&t=5d9a67b4'

3. MD5加密

特点

压缩性:任意长度的数据,算出的MD5值长度都是固定的。容易计算:从原数据计算出MD5值很容易。抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 # MD5加密原则上是不可逆的 import hashlib md5_encrypt = hashlib.md5("测试".encode()).hexdigest() print(md5_encrypt) >>> db06c78d1e24cf708a14ce81c9b617ec

4. Python加密库PyCryptodome

安装与导入

Windows安装之前需要先安装***Microsoft Visual c++ 2015***。

在Linux上安装

pip install pycryptodome

导入:

import Crypto

在Windows 上安装

pip install pycryptodomex

导入:

import Cryptodome

AES(对称加密)(msg, key)

import binascii from Cryptodome.Cipher import AES # msg长度和mode有关 def aes_encrypt(msg, key): if len(msg)%16 != 0: padding = 16 - len(msg)%16 msg += padding*chr(padding) iv = "0102030405060708" cipyter = AES.new(key.encode(), AES.MODE_CBC, iv=iv.encode()) encrypt = cipyter.encrypt(msg.encode()) encrypt = binascii.b2a_hex(encrypt) print(encrypt.decode()) aes_encrypt("sdsdsd", "0CoJUm6Qyw8W8jud")

RSA

非对称加密

# 密文 = 明文**E % N import codecs def rsa_encrypt(msg, n, e): msg = msg.encode() enctext = int(codecs.encode(msg, encoding='hex'), 16)**int(e, 16)%int(n,16) return format(enctext, 'x').zfill(256) msg = "ffffffffffffffff" e = '010001' n = "00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7" rsat = rsa_encrypt(msg, n, e) print(rsat) rsa_encrypt(msg, n, e)
最新回复(0)