python模块pyDes,DES对称加密算法库
一、简介
pyDes是一个Python模块,用于进行DES(Data Encryption Standard)加密和解密操作。DES是一种对称密钥加密算法,广泛用于数据保密和传输。
优点:
1.简单易用:pyDes模块提供了简单的接口,使得使用DES算法进行加密和解密变得容易。
2.兼容性:DES算法是一种广泛使用的加密算法,pyDes模块兼容标准的DES实现,并支持各种操作模式(如ECB、CBC等)和填充方式(如PKCS5、ZeroPadding等)。
3.可靠性:pyDes模块经过良好测试和验证,提供可靠的加密和解密功能。
缺点:
1.安全性:DES算法的密钥长度较短(56位),已经不足以提供足够的安全性。随着计算能力的提高,DES算法容易受到暴力破解攻击。
2.速度:由于DES算法的设计较早,pyDes模块在加密和解密大量数据时可能会比一些现代加密算法慢一些。
需要注意的是,由于DES算法的安全性问题,现在通常不推荐直接使用DES算法进行加密。更安全的选择是使用AES(Advanced Encryption Standard)等现代加密算法。如果需要进行加密操作,建议使用Python中的cryptography模块或其他现代加密库,以确保更高的安全性和性能。
二、安装
pip install pyDes
三、加密模式
- pyDes.CBC:表示密码块链模式,CBC是一种常用的加密模式,它使用前一个密文块作为下一个明文块的输入,增加了加密的随机性和安全性。
- pyDes.ECB:表示电子密码本模式,ECB是一种简单的加密模式,将每个明文块独立地加密成相应的密文块,不引入额外的随机性。
四、填充模式
- pyDes.PAD_NORMAL:表示常规的填充方式,在加密中,为了满足块大小的要求,需要对明文进行填充。PAD_NORMAL表示使用常规的填充方式,例如在明文的末尾添加0x00字节。
- pyDes.PAD_PKCS5:表示PKCS#5填充方式,PKCS#5是一种常用的填充方式,它在明文的末尾添加字节,字节的值等于需要填充的字节数。
五、加解密方法
- pyDes.des(key, mode=ECB, IV=None, pad=None, padmode=PAD_NORMAL):创建DES加密和解密对象,返回des对象
'''
key:DES算法使用的密钥,必须是8字节的字符串
mode:加密模式,可选参数,默认为ECB(电子密码本模式)。其他可选值包括CBC(密码块链模式)等。
IV:初始化向量(Initialization Vector),用于CBC模式。默认值为None,表示不使用初始化向量。
pad:填充字符,用于填充明文以满足块大小的要求。默认值为None,表示不进行填充。
padmode:填充模式,用于指定填充方式。默认值为PAD_NORMAL(常规填充方式)。其他可选值包括PAD_PKCS5(PKCS#5填充方式)等。
'''
import pyDeskey = 'abcdefgh'
plaintext = 'Hello, world!'des = pyDes.des(key, mode=pyDes.ECB, padmode=pyDes.PAD_PKCS5)ciphertext = des.encrypt(plaintext)print("加密后的密文:", ciphertext.hex())
- des.block_size:表示DES算法的分组大小(以字节为单位),通常为8字节(64位)。
- des.R:表示DES算法的轮数,通常为16轮。
- des.ENCRYPT:表示加密操作的常量,用于指定des.crypt()方法的crypt_type参数。
- des.L:表示DES算法的左半部分。
- des.DECRYPT:表示解密操作的常量,用于指定des.crypt()方法的crypt_type参数。
- des.final:表示DES算法的最终输出。
- des.key_size:表示DES算法的密钥长度(以字节为单位),通常为8字节(64位)。
- des.Kn:表示DES算法的子密钥列表。
- des.encrypt(data, pad=None, padmode=None):使用DES算法对数据进行加密。data是要加密的数据,pad是填充字符(可选),padmode是填充模式(可选)。
- des.decrypt(data, pad=None, padmode=None):使用DES算法对数据进行解密。data是要解密的数据,pad是填充字符(可选),padmode是填充模式(可选)。
- des.crypt(data, crypt_type):使用DES算法对数据进行加密或解密,根据crypt_type参数的值来确定操作类型。crypt_type可以是des.ENCRYPT(加密)或des.DECRYPT(解密)。
- des.setKey(key):设置当前DES对象的密钥。
- des.setIV(iv):设置当前DES对象的初始化向量(IV)。
- des.setMode(mode):设置当前DES对象的加密模式。
- des.setPadding(pad):设置当前DES对象的填充字符。
- des.setPadMode(mode):设置当前DES对象的填充模式。
- des.getIV():获取当前DES对象的初始化向量(IV)。
- des.getKey():获取当前DES对象的密钥。
- des.getMode():获取当前DES对象的加密模式。
- des.getPadding():获取当前DES对象的填充字符。
- des.getPadMode():获取当前DES对象的填充模式。
- pyDes.triple_des(key, mode=ECB, IV=None, pad=None, padmode=PAD_NORMAL):创建Triple DES加密和解密对象。Triple DES是DES的一个变种,使用了三个密钥进行多轮加密,提供更高的安全性,返回triple_des对象
'''
key:DES算法使用的密钥,可以是16字节或24字节的字符串。
mode:加密模式,可选参数,默认为ECB(电子密码本模式)。其他可选值包括CBC(密码块链模式)等。
IV:初始化向量(Initialization Vector),用于CBC模式。默认值为None,表示不使用初始化向量。
pad:填充字符,用于填充明文以满足块大小的要求。默认值为None,表示不进行填充。
padmode:填充模式,用于指定填充方式。默认值为PAD_NORMAL(常规填充方式)。其他可选值包括PAD_PKCS5(PKCS#5填充方式)等。
'''
import pyDeskey = 'abcdefghabcdefghabcdefgh'
plaintext = 'Hello, world!'triple_des = pyDes.triple_des(key, mode=pyDes.ECB, padmode=pyDes.PAD_PKCS5)ciphertext = triple_des.encrypt(plaintext)print("加密后的密文:", ciphertext.hex())
- triple_des.key_size:表示Triple DES算法的密钥长度(以字节为单位),通常为16字节(128位)或24字节(192位)。
- triple_des.block_size:表示Triple DES算法的分组大小(以字节为单位),通常为8字节(64位)。
- triple_des.encrypt(data, pad=None, padmode=None):使用Triple DES算法对数据进行加密。data是要加密的数据,pad是填充字符(可选),padmode是填充模式(可选)。
- triple_des.decrypt(data, pad=None, padmode=None):使用Triple DES算法对数据进行解密。data是要解密的数据,pad是填充字符(可选),padmode是填充模式(可选)。
- triple_des.setKey(key):设置当前Triple DES对象的密钥。key是一个字节字符串,长度必须符合Triple DES算法的要求。
- triple_des.setPadding(pad):设置当前Triple DES对象的填充字符。pad是一个字节字符,用于填充数据以满足分组大小的要求。
- triple_des.setMode(mode):设置当前Triple DES对象的加密模式。mode可以是pyDes.ECB(电子密码本模式)或pyDes.CBC(密码分组链接模式)。
- triple_des.setIV(iv):设置当前Triple DES对象的初始化向量(IV)。iv是一个字节字符串,长度必须符合Triple DES算法的要求。
- triple_des.setPadMode():设置当前Triple DES对象的填充模式。该方法在pyDes库中不存在,可能是一个误解。
- triple_des.getPadMode():获取当前Triple DES对象的填充模式。
- triple_des.getKey():获取当前Triple DES对象的密钥。
- triple_des.getPadding():获取当前Triple DES对象的填充字符。
- triple_des.getMode():获取当前Triple DES对象的加密模式。
相关文章:
python模块pyDes,DES对称加密算法库
一、简介 pyDes是一个Python模块,用于进行DES(Data Encryption Standard)加密和解密操作。DES是一种对称密钥加密算法,广泛用于数据保密和传输。 优点: 1.简单易用:pyDes模块提供了简单的接口,…...
Centos7安装配置nginx
快捷查看指令 ctrlf 进行搜索会直接定位到需要的知识点和命令讲解(如有不正确的地方欢迎各位小伙伴在评论区提意见,小编会及时修改) Centos7安装配置nginx Nginx介绍 Nginx (engine x) 是一个高性能的 HTTP 和 反向代理 服务,也…...
9.Spring 整合 Redis
引入依赖:spring-boot-starter-data-redis配置 Redis:配置数据库参数、编写配置类,构造 RedisTemplate访问 Redis: redisTemplate.opsForValue() redisTemplate.opsForHash() redisTemplate.opsForList() redisTemplate.opsForSe…...
【Java学习笔记】73 - 正则表达式
项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter27/src/com/yinhai/regexp 一、引入正则表达式 1.提取文章中所有的英文单词 2.提取文章中所有的数字 3.提取文章中所有的英文单词和数字 4.提取百度热榜标题 正则表达式是处理文本的利器…...
【算法】滑动窗口题单——1.定长滑动窗口⭐
文章目录 1456. 定长子串中元音的最大数目2269. 找到一个数字的 K 美丽值1984. 学生分数的最小差值(排序)643. 子数组最大平均数 I1343. 大小为 K 且平均值大于等于阈值的子数组数目2090. 半径为 k 的子数组平均值2379. 得到 K 个黑块的最少涂色次数1052…...
可观测性项目开发与学习ing
http1,2,3的区别 HTTP/1.0、HTTP/1.1、HTTP/2 和 HTTP/3 是不同版本的协议,它们在以下方面有所不同: HTTP/1.0: 是最早的版本,主要特点如下: 每个请求和响应都需要建立一个新的 TCP 连接。不支持持久连接(Keep-Alive&…...
apache-poi
excel类型 excel分为03版本和07版本 03版本 new HSSFWorkbook(); 优点:速度快 缺点:只能写入65536行数据 文件类型:.xls07版本 new XSSFWorkbook(); 优点:不限制写入数量 缺点:容易造成内存溢出(OOM),速度…...
TOD和PPS精确时间同步技术
介绍 PPS和TOD PPS和TOD是两种用于精确时间同步的技术,它们在许多领域都有广泛的应用,总的来说,PPS和TOD被广泛应用于各种需要高度精确时间同步的领域,包括通信、测量、测试、系统集成和计算机网络等。 一、PPS PPS(…...
通过一个例子理解pytest的fixture的使用
需求 希望编写登陆web后做一些操作的测试用例,使用pytest框架具体测试用例执行前,需要先拿到web的token,这个获取token的动作只执行一次 例一 先上测试用例代码 adminpc-1:~$ cat my_test.py import pytestclass TestWebLogin:pytest.fi…...
单片机BootLoader是咋回事?
BootLoader的定义: CPU进入APP之前运行的一小段程序代码就叫做BootLoader。它是由程序员编写的,作用是更新应用程序。这也就说明了只有BootLoader的单片机才可以升级。有的产品有升级的需要就需要BootLoader了。 单片机的启动过程可以这么叙述ÿ…...
python与机器学习1,机器学习的一些基础知识(完善ing)
目录 1 关于阈值θ和偏移量b和公式变形的由来 2 激活函数 3 关于回归,分类等 4 关于模型 5 关于回归 6 关于分类 7 关于误差和梯度下降 7-2 最小二乘法修改θ 8 深度学习 10 分类 11 参考书籍 1 关于阈值θ和偏移量b和公式变形的由来 比如很多信息传入可…...
移动应用开发介绍及iOS方向学习路线(HUT移动组版)
移动应用开发介绍及iOS方向学习路线(HUT移动组版) 前言 作为一个HUT移动组待了一坤年(两年半)多的老人,在这里为还在考虑进哪个组的萌新们以及将来进组的新朋友提供一份关于移动应用开发介绍以及学习路线的白话文…...
vue+uniapp校园寻物失物招领平台 微信小程序1f6z5
系统中的核心用户是管理员,管理员登录后,通过管理员菜单来管理后台系统。主要功能有:首页、个人中心、用户管理、物品分类管理、物品信息管理、物品归还管理、留言板管理、系统管理等功能。管理员用例如图3-7所示。 对于本网上失物招领小程序…...
Linux内核--内存管理(三)物理内存分页机制--kmalloc及slub机制
一、引言 二、slub机制 ------>2.1、slub分配原理slub原理 ------>2.2、slub分配原理 ------>2.3、slub释放原理 ------>2.4、SLUB分配器 三、slub数据结构 ------>3.1、kmem_cache ------>3.2、kmem_cache_cpu ------>3.3、kmem_cache_node --…...
Shell - cron_protect.sh 监控 Python、Streaming 程序
目录 一.引言 二.Flink 程序监控 1.shell 脚本 2.crontab 配置 三.Python 程序监控 1.shell 脚本 2.crontab 配置 四.总结 一.引言 业务有流式处理数据的需求,需要 7x24 通过 Flink Python 程序进行处理。为了监控 Flink 与 Python 的程序运行状态并在程…...
MSB3541 Files 的值“<<<<<<< HEAD”无效。路径中具有非法字符。
MSB3541 Files 的值“<<<<<<< HEAD”无效。路径中具有非法字符。 一般来说出现这个问题是因为使用git版本控制工具合并代码出现了问题,想要解决也很简单。 如图点击错误后定位到文件,发现也没有什么问题。 根据错误后边的提示&a…...
【赠书第9期】巧用ChatGPT高效搞定Excel数据分析
文章目录 前言 1 操作步骤 1.1 数据清理和整理 1.2 公式和函数的优化 1.3 图表和可视化 1.4 数据透视表的使用 1.5 条件格式化和筛选 1.6 数据分析技巧 1.7 自动化和宏的创建 2 推荐图书 3 粉丝福利 前言 ChatGPT 是一个强大的工具,可以为你提供在 Exce…...
会声会影2024旗舰版系统配置要求及格式支持
会声会影2024旗舰版是一款广受欢迎的视频编辑软件,它的最新版本,会声会影2023,已经发布。在这篇文章中,我们将探讨会声会影2024旗舰版系统配置要求及格式支持 会声会影2024是一款专业的视频剪辑软件,能够帮助用户制作高…...
【部署运维】docker:入门到进阶
0 前言 部署运维博客系列一共有三篇: 拥抱开源,将工作中的经验分享出来,尽量避免新手踩坑。 【部署运维】docker:入门到进阶 【部署运维】kubernetes:容器集群管理掌握这些就够了 【部署运维】pythonredisceleryd…...
鸿蒙开发学习——应用程序框架
文章目录 UIAbility的生命周期Create状态WindowStageCreateForeground和Background前后台展示控制onWindowStageDestroyDestory 总结 UIAbility的生命周期 感觉这里他讲的不清晰,UIAbility的4个声明周期是Create、Foreground(桌面展示)、Back…...
CentOS 7下‘Development Tools’和‘开发工具’组有区别吗?实测告诉你答案
CentOS 7下‘Development Tools’与‘开发工具’的隐藏关联:技术细节全解析在Linux系统管理中,yum的软件包组功能一直是个既实用又充满谜团的领域。特别是当系统语言环境与软件包元数据语言不一致时,开发者们常常会遇到一个有趣的现象&#x…...
D3KeyHelper:暗黑3玩家的智能按键助手,告别重复操作疲劳
D3KeyHelper:暗黑3玩家的智能按键助手,告别重复操作疲劳 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 你是否曾在《暗黑破坏…...
ARM架构CONSTRAINED UNPREDICTABLE行为解析与应对
1. ARM架构中的CONSTRAINED UNPREDICTABLE行为解析在处理器架构设计中,UNPREDICTABLE行为通常指架构规范未明确定义的执行结果,可能导致不可预期的系统状态。ARM架构通过引入CONSTRAINED UNPREDICTABLE机制,将这类行为限制在特定范围内&#…...
解决Claude Code访问不稳定与Token不足的痛点
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 解决Claude Code访问不稳定与Token不足的痛点 许多开发者将Claude Code作为日常编程的得力助手,用于代码生成、问题调试…...
Lindy自动化效率翻倍的秘密:从零搭建高可靠多步骤任务流的7步黄金流程
更多请点击: https://intelliparadigm.com 第一章:Lindy自动化效率翻倍的秘密:从零搭建高可靠多步骤任务流的7步黄金流程 Lindy自动化平台以“越久越可靠”为设计哲学,将经典软件工程原则与现代可观测性实践深度融合。其核心优势…...
DragonBones与Godot集成:骨骼动画的可编程化实践
1. 为什么在Godot里用DragonBones不是“锦上添花”,而是“绕不开的刚需” 去年上线一个横版动作手游Demo时,美术团队交来一套20个角色、每个角色含8套动画(待机/跑动/跳跃/攻击/受击/死亡/闪避/必杀)的Spine资源。我兴冲冲导入God…...
长期使用Token Plan套餐在项目开发中的成本观察
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用Token Plan套餐在项目开发中的成本观察 在AI驱动的项目开发中,成本控制与预算管理是团队负责人必须面对的现实…...
2026 文章代码高亮方案选型
将基于 Prism.js 或 Highlight.js 的传统高亮方案与基于 Shiki 的现代化高亮方案进行对比,其核心区别在于底层解析原理的不同(正则表达式 vs. TextMate 语法树)。 以下是两种方案的底层原理、各自优缺点、核心对比矩阵以及适用场景的详细分析…...
为什么你的DeepSeek微调loss震荡不止?(Meta/DeepSeek联合团队未公开的梯度裁剪+LoRA初始化双校准协议)
更多请点击: https://codechina.net 第一章:DeepSeek微调loss震荡的根本归因剖析 DeepSeek系列模型在微调过程中频繁出现loss剧烈震荡现象,其本质并非单一因素所致,而是数据、优化器、梯度动态与模型结构四者耦合失稳的系统性表现…...
为什么92%的数据库重构失败?Claude设计辅助如何在48小时内规避反范式陷阱?
更多请点击: https://codechina.net 第一章:为什么92%的数据库重构失败?——反范式陷阱的本质溯源 数据库重构失败率高达92%,其核心症结并非技术能力不足,而是对“反范式”这一设计策略的误读与滥用。许多团队在性能压…...
