赞
踩
记录一下自己小学期内做的项目。基于Python实现一个能够对凯撒密码、维吉尼亚密码、栅栏密码、摩斯密码、Base64编码、Ascii编码、AES、DES、RSA、RC4的加密解密以及维吉尼亚密文破解密钥和明文的CTF Crypto工具。其中程序的界面使用了qt以及pyside6实现。
以上就是该程序实现的界面,下面简单记录一下从拿到这个项目大纲再到基本实现的过程:
目录
第二步:为程序设计一个界面,我这里用的是qt以及pyside6实现
由于在CTF比赛里的Crypto题目中,经常会有一些大整数的运算用于对字符串的加密和解密,如果比赛中使用计算来对加解密的字符串进行处理会十分麻烦。因此,如果可以编写一个CTF Crypto工具自动处理字符串加解密就显得十分重要了。在众多密码类型中,常见的有以下几种:
常见的古典密码类型: 包括但不限于维吉利亚密码,凯撒密码,栅栏密码……
常见的现代密码类型: AES、DES、RSA、RC4……
常见的编码类型: Base64、Ascii、摩斯密码……
综合以上的需求分析,就尝试实现这几种吧…………
qt以及pyside6安装:
pip install Pyside6
安装完后就可以进入Pyside6的文件目录下找到design.exe进入qt去设计程序的界面了
进入后一般选择MainWindow或者Widget就够用了
选择类型后就拖动左边的部件到程序的窗口进行设计了
具体的qt界面的使用这里就不再赘述了,可以去b站看一下大佬们的仔细讲解,这里附上个人觉得讲的非常好的两个大佬的视频链接:
Python图形界面 15分钟快速入门PySide/PyQt_哔哩哔哩_bilibili
【python】快速上手GUI图形界面的编写(一)(使用pyside6,pyqt6,pyside2,pyqt5)_哔哩哔哩_bilibili
qt设计完界面后就是以下这个样子了
至此,程序的界面就已经设计完毕了,但目前这个ui文件并不能直接部署到python中去使用,需要将其转化为py类型的文件才可以使用
转化方法:
pyside6-uic xxxx.ui -o xxxx.py
转化完成后就可以进入下一步,进行部件与信号的绑定了
首先是对ui的文件进行连接并实例化窗口,同时引入了qtmodern模块进行简单的美化
- from PySide6.QtWidgets import QApplication, QMainWindow
- from ui import Ui_MainWindow
-
- import qtmodern.styles #引入qtmodern模块,简单的美化程序界面
- import qtmodern.windows
-
- class MainWindow(QMainWindow):
- def __init__(self):
- super(MainWindow, self).__init__()
- self.ui = Ui_MainWindow() # UI类的实例化()
- self.ui.setupUi(self)
-
-
- if __name__ == '__main__':
- app = QApplication([]) # 启动一个应用
- qtmodern.styles.light(app) #选择light风格,也可以选择另一个dark风格
- window = MainWindow() # 实例化主窗口
- window = qtmodern.windows.ModernWindow(window)
- window.show() # 展示主窗口
- app.exec() # 避免程序执行到这一行后直接退出
运行看一下程序的界面:
至此,就完成了窗口的实例化了,非常简单。
1、凯撒密码的加密和解密
凯撒密码是已知最早、最简单的密码之一。它是一种替换密码,在这种密码中,明文中的每个字母都被“移位”到字母表中一定数量的位置。例如,移动1,A会被B取代,B会变成C,以此类推。这种方法以朱利叶斯·凯撒(Julius Caesar)的名字命名。
假设我们移位的值是6
,掰起指头算一下,那么a
对应的就是g
,b
对应h
,c
对应i
等等。
加密前:i love csdn
加密后:o rubk iyjt
python实现代码:
- def kaisa_encode(p:str,k:int):
- list = ''
- for word in p:
- if word == ' ':
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。