前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[1272]python实现DES加密

[1272]python实现DES加密

作者头像
周小董
发布2024-03-17 08:35:55
1320
发布2024-03-17 08:35:55
举报
文章被收录于专栏:python前行者python前行者

DES/CBC/pkcs5padding加解密

DES加密模式
  • 加密模式:DES/CBC/pkcs5padding
  • 加解密在线工具:http://tool.chacuo.net/cryptdes
  • 需知道加密的密码(8位):yoyo1234
  • IV偏移量(8位):12345678
  • 输出编码格式(16进制):hex

在线加密结果 输入:yoyo 得到16进制:d50d7e20173f0e27

pyDes库

pip install pyDes==2.0.1

python代码实现DES加解密

代码语言:javascript
复制
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)

运行结果

代码语言:javascript
复制
b'd50d7e20173f0e27'
b'yoyo'

使用 ECB 模式和 PKCS5 填充方式对数据进行加密和解密。加密后的数据通过 base64 模块进行编码转换,解密前需要先进行解码。需要注意的是,在实际应用中,需要对秘钥和数据进行适当的保护和传输加密,以确保数据的安全性。

代码语言:javascript
复制
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)

参考:https://blog.csdn.net/qq_27371025/article/details/120636391 https://blog.csdn.net/hapenl/article/details/125462789

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DES/CBC/pkcs5padding加解密
    • DES加密模式
      • pyDes库
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档