# 编码混淆

# base 系列
# base64

以目前来看,最为常见的是 base64,结尾一般来讲都有一到 2 个等号,明文过短的时候就没有。

js 端 (base64):

// 明文:123
btoa('123');
// 密文:'MTIz'
// 解密
atob('MTIz');

python 端:

import base64
test_str = '123'
encode_str = base64.encodebytes(b'123')
#编码
print(encode_str.decode())
#解码
decode_str = base64.decodebytes(encode_str)
print(decode_str.decode())

这里要输入加密字符串的二进制码,然后其输出的结果也是一个二进制码,要对其进行一个 decode () 操作。

# Unicode 编码

\u&#&#x 开头,后面是数字加字母组合。

image-20220225225020052

# 算法加密
# MD5

本质上是一种信息摘要算法,对应关系为 n 对 1,也就是不同的数有相同的加密结果,但是一个数只会有唯一的加密值。密文一般是 16 或 32 位。

md5 加密特征:

  1. 0123456789ABCDEF、0123456789abcdef 的出现
  2. 1732584193、-271733879、-1732584194、271733878 的出现

至于为什么会有上述特征,后面在研究。

import hashlib
m = hashlib.md5(b'123').hexdigest()
print(m)
#202cb962ac59075b964b07152d234b70
# SHA 系列

比 md5 长一些。

import hashlib
m = hashlib.sha1(b'123').hexdigest()
print(m)
#40bd001563085fc35165329ea1ff5c5ecbdbbeef
# HMAC 系列

据说是在 md5、sha 系列的基础上引入秘钥。

import hmac
m = hmac.new(b'key', b'123', digestmod='MD5').hexdigest()
print(m)
#52851cb05258c8d98da1672d95729e53
n= hmac.new(b'key', b'123', digestmod='SHA1').hexdigest()
print(n)
#d4a5b6721d75a5ac15ec698818c77fe1f6e40187
# RSA 加密

非对称加密,使用公钥加密,然后用私钥解密,私钥加密的,可以用公钥解密。

import rsa
def rsaEncrypt(text):
    # 生成 512 位公钥、私钥
    (pubkey, privkey) = rsa.newkeys(512)
    print(f'公钥{pubkey},私钥{privkey}')
    crypto = rsa.encrypt(text.encode('utf-8'), pubkey)
    return (crypto, privkey)
def rsaDecrypt(text, key):
    return rsa.decrypt(text,key).decode('utf-8')
text,pk = rsaEncrypt('123')
print('密文',text,pk)
content=  rsaDecrypt(text, pk)
print('明文', content)

在 js 中,有一个明显的特征就是设置公钥。

# DES 加密
Edited on

Give me a cup of [coffee]~( ̄▽ ̄)~*

Mr2 WeChat Pay

WeChat Pay