python3使用3des加密

安装pyDes
pip install pyDes

案例:

import pyDes
import base64
import os

data = 'hello'

key = os.urandom(24)  # 随机生成24字节=> 3des
mode = pyDes.CBC  # 使用CBC模式
IV = os.urandom(8)  # 随机生成8字节的IV    8字节的倍数

k = pyDes.triple_des(key, mode, IV=IV, pad=None, padmode=pyDes.PAD_PKCS5)  # 传入秘钥,模式和IV

d = k.encrypt(data)  # 加密数据

base = base64.b64encode(d).decode()  # 编码为base64字符串
print(base)

e = k.decrypt(base64.b64decode(base))  # 解码为字节串并解密
print(e.decode())

在Python中,对于3DES加密,其IV(初始化向量)的长度通常是8个字节。在使用pycryptodome库进行3DES加密时,你需要确保提供的密钥长度为24位。请注意,如果密钥长度不足24位,你可能需要对其进行补零;如果密钥长度超过24位,你需要截取其前24位。

pip install pycryptodome
import base64
from Crypto.Cipher import DES3


def des3(data_string):
    # 3DES的MODE_CBC模式下只有前24位有意义
    key = b'appapiche168comappapiche168comap'[0:24]
    iv = b'appapiche168coma'[0:8]

    plaintext = data_string.encode("utf-8")

    # 使用MODE_CBC创建cipher
    cipher = DES3.new(key, DES3.MODE_CBC, iv)
    result = cipher.encrypt(pad(plaintext, 8))  # 使用PKCS5填充
    return base64.b64encode(result).decode('utf-8')

加密出来的去验证一下 http://tool.chacuo.net/crypt3des

posted @ 2023-02-04 15:57  hanfe1  阅读(314)  评论(0编辑  收藏  举报