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

目录

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就最好,不要那么多花里胡哨。

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

 

 

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CyberSecurity_zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值