Mrli
别装作很努力,
因为结局不会陪你演戏。
Contacts:
QQ博客园

使用Python转义实现前端加密算法-记录笔记

2022/04/29 爬虫 Python
Word count: 726 | Reading time: 3min

环境安装

1
2
3
pip uninstall crypto
pip uninstall pycryptodome
pip install pycryptodome

前面两个卸载命令是为了防止一些安装环境问题,具体请看文章

pycryptodome

AES加密

加密模式

AES 加密最常用的模式就是 ECB模式 和 CBC 模式,当然还有很多其它模式,他们都属于AES加密。ECB模式和CBC 模式俩者区别就是 ECB 不需要 iv偏移量,而CBC需要。

AES加密使用参数

以下参数都是在python中使用的。

参数 作用及数据类型
秘钥 加密的时候用秘钥,解密的时候需要同样的秘钥才能解出来; 数据类型为bytes
明文 需要加密的参数; 数据类型为bytes
模式 aes 加密常用的有 ECB 和 CBC 模式(我只用了这两个模式,还有其他模式);数据类型为aes类内部的枚举量
iv 偏移量 这个参数在 ECB 模式下不需要,在 CBC 模式下需要;数据类型为bytes

1
2
3
4
5
6
7
8
9
10
11
12
# ECB模式加密解密
from Crypto.Cipher import AES

password = b'1234567812345678' #秘钥,b就是表示为bytes类型
text = b'abcdefghijklmnhi' #需要加密的内容,bytes类型
aes = AES.new(password,AES.MODE_ECB) #创建一个aes对象
# AES.MODE_ECB 表示模式是ECB模式
en_text = aes.encrypt(text) #加密明文
print("密文:",en_text) #加密明文,bytes类型

den_text = aes.decrypt(en_text) # 解密密文
print("明文:",den_text)

以上是针对ECB模式的加密解密,从这个例子中可以看出参数中有几个限制。

  1. 秘钥必须为16字节或者16字节的倍数的字节型数据。
  2. 明文必须为16字节或者16字节的倍数的字节型数据,如果不够16字节需要进行补全,关于补全规则,后面会在补全模式中具体介绍。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# CBC
from Crypto.Cipher import AES

password = b'1234567812345678' #秘钥,b就是表示为bytes类型
iv = b'1234567812345678' # iv偏移量,bytes类型
text = b'abcdefghijklmnhi' #需要加密的内容,bytes类型
aes = AES.new(password,AES.MODE_CBC,iv) #创建一个aes对象
# AES.MODE_CBC 表示模式是CBC模式
en_text = aes.encrypt(text)
print("密文:",en_text) #加密明文,bytes类型

aes = AES.new(password,AES.MODE_CBC,iv) #CBC模式下解密需要重新创建一个aes对象
den_text = aes.decrypt(en_text)
print("明文:",den_text)

hashlib

MD5

hashlib模块下的"加密"

1
2
3
4
5
6
7
8
9
import hashlib
string='任性的90后boy'
md5 = hashlib.md5()
md5.update(string.encode('utf-8'))#转码,update里的必须是字节型
# 默认是32位小写
res = md5.hexdigest() #返回字符型摘要信息print(md5.digest())#返回字节型的摘要信息
# 切换到16位大写
# res=md5.hexdigest()[8:-8]
print("md5加密结果:",res)

Sha256

1
2
3
4
5
6
import hashlib
string='任性的90后boy'
sha256 = hashlib.sha256()
sha256.update(string.encode('utf-8'))
res = sha256.hexdigest()
print("sha256加密结果:",res)

Author: Mrli

Link: https://nymrli.top/2022/04/29/使用Python转义实现前端加密算法-记录笔记/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
mitmproxy拦截代理——PC版HttpCanary
NextPost >
V-P-N(Vmess)与Charles无法共用问题解决
CATALOG
  1. 1. 环境安装
  • pycryptodome
    1. 1. AES加密
  • hashlib
    1. 1. MD5
    2. 2. Sha256