当前位置: 首页 > news >正文

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
三、加密模式
  1. pyDes.CBC:表示密码块链模式,CBC是一种常用的加密模式,它使用前一个密文块作为下一个明文块的输入,增加了加密的随机性和安全性。
  2. pyDes.ECB:表示电子密码本模式,ECB是一种简单的加密模式,将每个明文块独立地加密成相应的密文块,不引入额外的随机性。
四、填充模式
  1. pyDes.PAD_NORMAL:表示常规的填充方式,在加密中,为了满足块大小的要求,需要对明文进行填充。PAD_NORMAL表示使用常规的填充方式,例如在明文的末尾添加0x00字节。
  2. pyDes.PAD_PKCS5:表示PKCS#5填充方式,PKCS#5是一种常用的填充方式,它在明文的末尾添加字节,字节的值等于需要填充的字节数。
五、加解密方法
  1. 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对象的填充模式。
  1. 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&#xff08…...

通过一个例子理解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了。 单片机的启动过程可以这么叙述&#xff…...

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版本控制工具合并代码出现了问题&#xff0c;想要解决也很简单。 如图点击错误后定位到文件&#xff0c;发现也没有什么问题。 根据错误后边的提示&a…...

【赠书第9期】巧用ChatGPT高效搞定Excel数据分析

文章目录 前言 1 操作步骤 1.1 数据清理和整理 1.2 公式和函数的优化 1.3 图表和可视化 1.4 数据透视表的使用 1.5 条件格式化和筛选 1.6 数据分析技巧 1.7 自动化和宏的创建 2 推荐图书 3 粉丝福利 前言 ChatGPT 是一个强大的工具&#xff0c;可以为你提供在 Exce…...

会声会影2024旗舰版系统配置要求及格式支持

会声会影2024旗舰版是一款广受欢迎的视频编辑软件&#xff0c;它的最新版本&#xff0c;会声会影2023&#xff0c;已经发布。在这篇文章中&#xff0c;我们将探讨会声会影2024旗舰版系统配置要求及格式支持 会声会影2024是一款专业的视频剪辑软件&#xff0c;能够帮助用户制作高…...

【部署运维】docker:入门到进阶

0 前言 部署运维博客系列一共有三篇&#xff1a; 拥抱开源&#xff0c;将工作中的经验分享出来&#xff0c;尽量避免新手踩坑。 【部署运维】docker&#xff1a;入门到进阶 【部署运维】kubernetes&#xff1a;容器集群管理掌握这些就够了 【部署运维】pythonredisceleryd…...

鸿蒙开发学习——应用程序框架

文章目录 UIAbility的生命周期Create状态WindowStageCreateForeground和Background前后台展示控制onWindowStageDestroyDestory 总结 UIAbility的生命周期 感觉这里他讲的不清晰&#xff0c;UIAbility的4个声明周期是Create、Foreground&#xff08;桌面展示&#xff09;、Back…...

Rebus扩展开发指南:如何编写自定义传输、序列化和中间件

Rebus扩展开发指南&#xff1a;如何编写自定义传输、序列化和中间件 【免费下载链接】Rebus :bus: Simple and lean service bus implementation for .NET 项目地址: https://gitcode.com/gh_mirrors/re/Rebus Rebus是一个为.NET平台设计的轻量级服务总线实现&#xff0…...

告别手动搬运:利用Gitee镜像功能实现GitHub仓库的自动同步

1. 为什么需要自动化同步GitHub和Gitee仓库 作为一个经常在GitHub和Gitee双平台托管代码的开发者&#xff0c;我深刻理解手动同步的痛苦。每次在GitHub上提交代码后&#xff0c;都要记得去Gitee手动更新&#xff0c;稍不留神就会忘记&#xff0c;导致两个平台的代码版本不一致。…...

别只用AI写脚本了,现在AI打广告可真是城会玩了!

金磊 发自 凹非寺量子位 | 公众号 QbitAI咱就是说啊&#xff0c;现在的广告可真是城会玩了——像下面这个再正常不过的短视频剧情&#xff0c;当镜头切到宝宝喝牛乳的时候&#xff0c;啪的一下&#xff0c;左下角就精准弹出了奶粉广子&#xff1a;以为这是人为提前设置好的&…...

大数据运维项目二大数据分布式集群

图1.集群基础配置Linux 集群基础配置全流程详解&#xff08;网络 / 时钟 / SSH 免密 / JDK 部署&#xff09;在大数据、云计算等分布式场景中&#xff0c;集群基础环境配置是所有服务搭建的前置步骤&#xff0c;直接决定后续 Hadoop、Spark 等组件能否稳定运行。本文基于实战经…...

视频抠像革命:如何用MatAnyone在5分钟内获得专业级绿幕效果

视频抠像革命&#xff1a;如何用MatAnyone在5分钟内获得专业级绿幕效果 【免费下载链接】MatAnyone [CVPR 2025] MatAnyone: Stable Video Matting with Consistent Memory Propagation 项目地址: https://gitcode.com/gh_mirrors/ma/MatAnyone 还在为视频抠像烦恼吗&am…...

SGLang实战:如何用Python DSL编写带分支的LLM生成任务(附完整代码)

SGLang实战&#xff1a;如何用Python DSL编写带分支的LLM生成任务&#xff08;附完整代码&#xff09; 在构建复杂AI应用时&#xff0c;开发者常面临一个核心矛盾&#xff1a;既希望利用大语言模型&#xff08;LLM&#xff09;的生成能力&#xff0c;又需要精确控制生成流程。传…...

深入LPDDR5 Rx Offset校准:为什么你的DRAM上电后时序总是不对?

深入解析LPDDR5 Rx Offset校准&#xff1a;解决DRAM上电时序漂移的实战指南 当你在凌晨三点的实验室里&#xff0c;面对第七次冷启动失败的系统&#xff0c;示波器上那些不稳定的DQ信号波形是否让你感到绝望&#xff1f;这可能是LPDDR5的Rx Offset校准出了问题。让我们从一次真…...

Java大厂面试:从Spring Boot到微服务架构的三轮攻防

Java大厂面试&#xff1a;从Spring Boot到微服务架构的三轮攻防 场景背景 在互联网大厂的面试中&#xff0c;谢飞机&#xff0c;一位搞笑又有些不靠谱的程序员&#xff0c;正在经历一场严肃的Java面试。面试官将从Spring Boot到微服务的多个技术点层层提问&#xff0c;带你深入…...

openclaw平替之nanobot源码解析(六):子智能体(Subagents)试

插件化架构 v3 版本最大的变化是引入了模块化插件系统。此前版本中集成在核心包里的原生功能&#xff0c;现在被拆分成独立的插件。 每个插件都是一个独立的 Composer 包&#xff0c;包含 Swift 和 Kotlin 代码、权限清单以及原生依赖。开发者只需安装实际用到的插件&#xff0…...

.NET后端集成:开发Windows桌面端字幕制作工具

.NET后端集成&#xff1a;开发Windows桌面端字幕制作工具 1. 引言 做视频的朋友们&#xff0c;尤其是那些需要处理大量口播、课程或者访谈内容的&#xff0c;应该都体会过手动加字幕的“痛苦”。一句一句听&#xff0c;一帧一帧对&#xff0c;眼睛盯着波形图&#xff0c;手指…...