当前位置:   article > 正文

基于Python实现的CTF Crypto加密解密工具_crypto解密工具

crypto解密工具

记录一下自己小学期内做的项目。基于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实现

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模块进行简单的美化

  1. from PySide6.QtWidgets import QApplication, QMainWindow
  2. from ui import Ui_MainWindow
  3. import qtmodern.styles #引入qtmodern模块,简单的美化程序界面
  4. import qtmodern.windows
  5. class MainWindow(QMainWindow):
  6. def __init__(self):
  7. super(MainWindow, self).__init__()
  8. self.ui = Ui_MainWindow() # UI类的实例化()
  9. self.ui.setupUi(self)
  10. if __name__ == '__main__':
  11. app = QApplication([]) # 启动一个应用
  12. qtmodern.styles.light(app) #选择light风格,也可以选择另一个dark风格
  13. window = MainWindow() # 实例化主窗口
  14. window = qtmodern.windows.ModernWindow(window)
  15. window.show() # 展示主窗口
  16. app.exec() # 避免程序执行到这一行后直接退出

运行看一下程序的界面: 

 

 至此,就完成了窗口的实例化了,非常简单。

第四步:实现不同密码类型下的加密和解密

 1、凯撒密码的加密和解密

凯撒密码是已知最早、最简单的密码之一。它是一种替换密码,在这种密码中,明文中的每个字母都被“移位”到字母表中一定数量的位置。例如,移动1,A会被B取代,B会变成C,以此类推。这种方法以朱利叶斯·凯撒(Julius Caesar)的名字命名。 

假设我们移位的值是6,掰起指头算一下,那么a对应的就是gb对应hc对应i等等。 

加密前:i  love csdn
加密后:o rubk iyjt

python实现代码:

  1. def kaisa_encode(p:str,k:int):
  2. list = ''
  3. for word in p:
  4. if word == ' ':
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/422806
推荐阅读
相关标签
  

闽ICP备14008679号