Python开发日记--手撸加解密小工具(3)

news2024/12/22 19:41:42

目录

1.xcb-cuisor0问题解决

2.AES-CBC算法实现

2.1 信号和槽机制

 2.2 开始设计算法

3.小结


1.xcb-cuisor0问题解决

继续解决该问题,在Ubuntu下面运行会发生这个错误。

看描述, 这是说要运行Qt xcb平台插件,需要xcb-cursor0或者libxcb-cursor0,这还不简单?

我直接安装对应插件不就行了吗?

终端里执行:

sudo apt-get install libxcb-cursor0

这时候再运行代码就没有报错了,此时显示界面如下,还是比较符合预期了:

 这里补充一点代码说明:

我们用过PyUIC转换得到.py代码,得到的仅仅是Ui_Mainwindow这样的类,它里面定义的方法有setupUi(self, MainWindow),如果直接使用UI.py,会发现没有办法弹出想要的界面,例如window.show(),它实际上是没有这个属性的。

因为我们只是实例化了Ui_Mainwindow对象,并没有任何窗口对象,所以需要再实例化一个QMainwindow来承接属性并显示。

2.AES-CBC算法实现

对于UI的程序逻辑思路是,点击“calculate”,自动根据算法搜集所需数据,包括密钥、原始文档、IV等等, 最后计算出结果。

那我们就首先要解决UI上各种数据来源,其实也就是各个对象之间通信机制-- 信号和槽。

2.1 信号和槽机制

这个机制很好理解,以跑步比赛为例,听到发令枪的信号后(这就是信号),运动员立马响应开始跑步(这就是槽函数里指定动作)。

对于Qt Designer里,我们可以信号/槽 编辑器是如下界面:

 需要注意的是,信号和槽只有连接后才会起作用,对应代码如下:

widget.signal.connect(slot)

在不会写这代码之前,我们可以使用QT Designer来看下如何连接信号和槽,如下:

拖动控件发送信号,到指定控件,选择clicked,这是信号,右侧为槽函数,得到代码如下:

self.PBSymCalc.clicked.connect(self.QTextLael.selectall)

而我们的目的是要求它显示结果,很明显QLineEdit这个控件里没有我们想要的方法,所以一般来说,我们把UI搞好了,很多信号\槽是需要自己手写的。

所以,我们这样来定义一个方法,目的是为了获取数据加解密并显示结果,如下:

得到结果如下: 

 2.2 开始设计算法

终于开始进入正题,要实现密码算法,我们很自然想到了OpenSSL,在python视角了使用pyOpenSSL,它相当于是对openSSL的一个python封装。

如下是文档链接 Welcome to pyOpenSSL’s documentation! — pyOpenSSL 24.1.0 documentation

根据文档描述,对于加密来说了,使用pyca/cryptographyg更加合适,那么我们肯定听劝呀。

Note

pyca/cryptography is likely a better choice than using this module. It contains a complete set of cryptographic primitives as well as a significantly better and more powerful X509 API. If necessary you can convert to and from cryptography objects using the to_cryptography and from_cryptography methods on X509X509ReqCRL, and PKey.

 首先我们思考一下,如果我们在之前UI转出来的.py里去定义方法,那么后续如果UI一变,代码就得重新复制,这就很麻烦,所以,我们选择在一个新的.py里去继承这个UI里的内容,并在里面是实现我们想要的算法,如下图:

这样的好处就是将文件进行解耦,每个文件专注做想要的功能即可。 

在该文件里,我们准备开始进行计算,首先导入密码库对应类,如下图:

然后我们就要进行思考,原始文件、密钥、IV等数据如何从QTextEdit中取出,熟悉的朋友对于这个块应该很熟,不清楚滴可以直接去类里找方法,如下:

最后,代码如下:

接下来就是填充和算法解析,这个直接到官网找例子即可。得出效果如下:

3.小结

 目前看,我们实现了加密或者解密的功能,但是针对这个密文格式问题,后面单独再讨论,其实直接显示hex就最好,不要那么多花里胡哨。

前面三小节,我们算法把这条路打通了,接下来就是各种算法的实现,以及异常情况的处理。后面继续

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1847674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

舔狗日记Puls微信小程序源码

源码介绍: 这是一款舔狗日记Puls微信小程序源码,提供每日一舔的功能,让你舔到最后,什么都有! 源码通过API获取一些舔狗日记,内置了100多句舔狗日记,让你摆脱上班摸鱼的无聊时光, …

Python火焰锋动力学和浅水表面波浪偏微分方程

🎯要点 🎯流图可视化正弦余弦矢量场 | 🎯解空间变化边界条件二维拉普拉斯方程 | 🎯解圆柱坐标系标量场 | 🎯解一维泊松方程 | 🎯解二维扩散方程 | 🎯解火焰锋的动力学偏微分方程 | &#x1f3a…

【LeetCode刷题】6. Z 字形变换

1. 题目链接2. 题目描述3. 解题方法4. 代码 1. 题目链接 6. Z 字形变换 2. 题目描述 3. 解题方法 假设一串字符串"abcdefghijklmnopqrstuvwx", 会有如下排列: 我们再以下标来看看排列 从下标来看,每个下标是有规律的 每一行的下标之间的差…

一个自定义流程的平台

脚本语言使用的是C#,当用户发布一个新的流程时,会把C#的脚本编译成dll,然后添加到微服务中,因为有了硬编译,所以执行速度是非常快的。逻辑脚本支持调试,可以断点和逐行调试。平台提供了调试工具&#xff0c…

每月 GitHub 探索|10 款引领科技趋势的开源项目

1.IT-Tools 仓库名称: CorentinTh/it-tools 截止发稿星数: 16842 (近一个月新增:5744) 仓库语言: Vue 仓库开源协议: GNU General Public License v3.0 引言 CorentinTh/it-tools 是一个开源项目,提供各种对开发者友好的在线工具&#xff0…

LabVIEW项目中的常见电机及其特点分析

在LabVIEW项目中,电机的选择对系统的性能和应用效果至关重要。常见电机类型包括直流电机(DC Motor)、步进电机(Stepper Motor)、交流感应电机(AC Induction Motor)和无刷直流电机(BL…

使用上海云盾 CDN 和 CloudFlare 后 Nginx、 WordPress、 Typecho 获取访客真实 IP 方法

最近因为被 DDoS/CC 攻击的厉害,明月就临时的迁移了服务器,原来的服务器就空置下来了,让明月有时间对服务器进行了重置重新部署安装生产环境。因为站点同时使用了上海云盾和 CloudFlare(具体思路可以参考【国内网站使用国外 CloudFlare CDN 的思路分享】一文)两个 CDN 服务…

人工智能--搭建人工神经网络

欢迎来到 Papicatch的博客 文章目录 🍉引言 🍉神经元与感知器 🍈神经元(Neuron) 🍈感知器 🍉损失函数与梯度下降算法 🍈损失函数 🍈梯度下降算法 🍉…

微型操作系统内核源码详解系列五(3):cm3下调度的开启

系列一:微型操作系统内核源码详解系列一:rtos内核源码概论篇(以freertos为例)-CSDN博客 系列二:微型操作系统内核源码详解系列二:数据结构和对象篇(以freertos为例)-CSDN博客 系列…

大语言模型-Transformer

目录 1.概述 2.作用 3.诞生背景 4.历史版本 5.优缺点 5.1.优点 5.2.缺点 6.如何使用 7.应用场景 7.1.十大应用场景 7.2.聊天机器人 8.Python示例 9.总结 1.概述 大语言模型-Transformer是一种基于自注意力机制(self-attention)的深度学习…

AI通用大模型不及垂直大模型?各有各的好

​​​​​​​AI时代,通用大模型和垂直大模型,两者孰优孰劣,一直众说纷纭。 通用大模型,聚焦基础层,如ChatGPT、百度文心一言,科大讯飞星火大模型等,都归属通用大模型,它们可以解答…

nginx出现504 Gateway Time-out错误的原因分析及解决

nginx出现504 Gateway Time-out错误的原因分析及解决 1、查看公网带宽是否被打满 2、查看网络是否有波动(可以在nginx上ping后端服务,看是否有丢包情况) 3、查看服务器资源使用情况(cpu、内存、磁盘、网络等) 4、查看nginx日志,具体到哪个服务的哪个…

美创科技入选“2024年度浙江省工业信息安全服务支撑单位”

近日,浙江省经济和信息化厅公布“2024年度浙江省工业信息安全服务支撑单位”名单。 经单位自愿申报、各市经信主管部门初审推荐、专家评审等环节,凭借在工业数据安全领域长期深耕和产品服务实力,美创科技成功入选! “2024年度浙江…

Java数据类型与运算符

1. 变量和类型 变量指的是程序运行时可变的量,相当于开辟一块空间来保存一些数据。 类型则是对变量的种类进行了划分,不同类型的变量具有不同的特性。 1.1 整型变量(重点) 基本语法格式: int 变量名 初始值;代码示…

Vue70-路由的几个注意点

一、路由组件和一般组件 1-1、一般组件 1-2、路由组件 不用写组件标签。靠路由规则匹配出来,由路由器渲染出来的组件。 1-3、注意点1 一般组件和路由组件,一般放在不同的文件夹,便于管理。 一般组件放在components文件夹下。 1-4、注意点…

五十四、openlayers官网示例LineString Arrows解析——在地图上绘制箭头

官网demo地址: LineString Arrows 这篇介绍了在地图上绘制箭头。 创建一个矢量数据源,将其绑定为draw的数据源并展示在矢量图层上。 const source new VectorSource();const vector new VectorLayer({source: source,style: styleFunction,});map.ad…

mac赛车竞速游戏:弯道卡丁车车手 for Mac 中文版下载

《弯道卡丁车车手》是一款刺激的卡丁车竞速游戏,玩家扮演的是赛道上的卡丁车车手,需要在曲线崎岖的赛道上驾驶卡丁车,与其他车手展开激烈的竞速比赛。 游戏中有多种赛道可以选择,每个赛道都有不同的难度和特点,玩家需…

“打造智能售货机系统,基于ruoyi微服务版本开源项目“

目录 # 开篇 售货机术语 1. 表设计说明 2. 页面展示 2.1 区域管理页面 2.2 合作商管理页面 2.3 点位管理页面 3. 建表资源 3.1 创建表的 SQL 语句(包含字段备注) 1. Region 表 2. Node 表 3. Partner 表 4. 创建 tb_vending_machine 表的 S…

【python数据可视化】利用Python爬取天气数据并实现数据可视化,绘制天气轮播图

用Python爬虫抓取全年天气数据并绘制天气轮播图 一、运行结果: 二、代码展示: 由csv文件生成↓ 接下来是绘制天气轮播图 运行结果: 完整代码请看这里↓👇 提醒制作这个项目你需要执行以下几个步骤: 确定数据源&#x…

TIM: A Time Interval Machine for Audio-Visual Action Recognition

标题:TIM:一种用于视听动作识别的时间间隔机器 源文链接:openaccess.thecvf.com/content/CVPR2024/papers/Chalk_TIM_A_Time_Interval_Machine_for_Audio-Visual_Action_Recognition_CVPR_2024_paper.pdfhttps://openaccess.thecvf.com/cont…