当前位置: 首页 > 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…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...