在线加密结果
输入:yoyo
得到16进制:d50d7e20173f0e27
pip install pyDes==2.0.1
python代码实现DES加解密
from pyDes import des, CBC, PAD_PKCS5
import binascii
"""
加密模式:DES/CBC/pkcs5padding
需pip先安装依赖包
> pip install pyDes
"""
def des_encrypt(s, key='yoyo1234'):
"""
DES 加密
:param s: 原始字符串
:param key: 加密密钥8位
:return: 加密后字符串,16进制
"""
secret_key = key
iv = '12345678' # 偏移量8位
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
en = k.encrypt(s, padmode=PAD_PKCS5)
return binascii.b2a_hex(en)
def des_descrypt(s, key='yoyo1234'):
"""
DES 解密
:param s: 加密后的字符串,16进制
:return: 解密后的字符串
"""
secret_key = key
iv = '12345678' # 偏移量8位
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
de = k.decrypt(binascii.a2b_hex(s), padmode=PAD_PKCS5)
return de
if __name__ == '__main__':
s = 'yoyo'
encry_s = des_encrypt(s)
print(encry_s)
descry_s = des_descrypt(encry_s)
print(descry_s)
运行结果
b'd50d7e20173f0e27'
b'yoyo'
使用 ECB 模式和 PKCS5 填充方式对数据进行加密和解密。加密后的数据通过 base64 模块进行编码转换,解密前需要先进行解码。需要注意的是,在实际应用中,需要对秘钥和数据进行适当的保护和传输加密,以确保数据的安全性。
import base64
import pyDes
# 定义秘钥和待加密的数据
key = b'abcdefgh' # 8字节的秘钥
data = b'Hello, world!'
# 创建 DES 对象
des = pyDes.des(key, pyDes.ECB, pad=None, padmode=pyDes.PAD_PKCS5)
# 加密数据
encrypted_data = des.encrypt(data)
print('加密后的数据:', encrypted_data)
# 对加密后的数据进行 base64 编码
encrypted_data_base64 = base64.b64encode(encrypted_data)
print('加密后的数据(Base64编码):', encrypted_data_base64)
# 对加密后的数据进行 base64 解码
encrypted_data = base64.b64decode(encrypted_data_base64)
# 解密数据
decrypted_data = des.decrypt(encrypted_data)
print('解密后的数据:', decrypted_data)