AES和DES使用python实现
AES加解密
import base64
如果没有这个模块,建议使用pycryptodomex
from Crypto.Cipher import AES
密钥(key), 偏移量(vi) CBC模式加密
def AES_Encrypt(key, data):
vi = 'Cooooooooooooool'
pad = lambda s: s + (16 - len(s)%16) * chr(0)
data = pad(data)
# 字符串补位
cipher = AES.new(key.encode('utf8'), AES.MODE_CBC, vi.encode('utf8'))
encryptedbytes = cipher.encrypt(data.encode('utf8'))
# 加密后得到的是bytes类型的数据
encodestrs = base64.b64encode(encryptedbytes)
# 使用Base64进行编码,返回byte字符串
enctext = encodestrs.decode('utf8')
# 对byte字符串按utf-8进行解码
return enctext
def AES_Decrypt(key, data):
vi = 'Cooooooooooooool'
data = data.encode('utf8')
encodebytes = base64.decodebytes(data)
# 将加密数据转换位bytes类型数据
cipher = AES.new(key.encode('utf8'), AES.MODE_CBC, vi.encode('utf8'))
text_decrypted = cipher.decrypt(encodebytes)
text_decrypted=text_decrypted.rstrip(b'\0')
# 去补位
text_decrypted = text_decrypted.decode('utf8')
return text_decrypted
测试
key = 'Cooooooooooooool'
data = '{"hahahha":"","youyouyou":"","ninini":"uuu"}'
AES_Encrypt(key, data)
enctext = AES_Encrypt(key, data)
print(enctext)
AES_Decrypt(key, enctext)
text_decrypted = AES_Decrypt(key, enctext)
print(text_decrypted)
`
DES加密
`
import base64
import random
import time
from pyDes import des, ECB
def pad(b):
"""
块填充
"""
block_size = 8
while len(b) % block_size:
b += b'\0'
return b
def get_encrypt_content(message, key, flag):
"""
接口参数的加密、解密
"""
des_obj = des(key.encode(), mode=ECB)
if flag:
content = pad(str(message).replace(' ', '').encode())
return base64.b64encode(des_obj.encrypt(content)).decode('utf-8')
else:
return des_obj.decrypt(base64.b64decode(message)).decode('utf-8')