Python开发记录--手撸加解密小工具(1)

目录

1.环境搭建

2. PyQt简介

3.小结


最近考虑设计一个涵盖国际、国家等加密算法的小工具,用于组内测试使用。一来回顾下算法,二来很久没写代码得练练手感,给工具取个名字:MuscleV0.1

MuscleV0.1涵盖的算法:

  • 对称算法:
    • AES(64\128\192\256)-ECB\CBC\OFB\CTR\XTX\GCM\CCM\CMAC\CBC-MAC\GFMUL
    • DES-ECB\CBC\OFB\CTR\CMAC\CBCMAC
    • TDES-ECB\CBC\OFB\CTR\CMAC\CBCMAC
    • SM4-128-ECB\CBC\OFB\XTS\GCM\CCM\CTR\CMAC\CBCMAC
  • 非对称算法:
    • RSASSA-1024\2048\3072\4096\8192
    • ECDSA-192\224\256\384\512\521
    • SM2DSA
  • 摘要算法:
    • SHA-1\224\256\384\512
    • MD5\SM3
    • HMAC-SHA224\256\384\512
    • HMAC-MD5\SM3

因此,为了实现上述功能,选用Python进行设计(密码库多),使用PyQt设计UI。

环境:Ubuntu 20.04.6,开发工具Pycharm、PyQt、Qt Designer、密码库。

1.环境搭建

解压Pycharm.tar.gz :

//压缩:
tar -xzvf xxx.tar.gz
//解压
tar -czvf xx.tar.gz xxx.c

运行pycharm(./pycharm.sh),我们就开始安装对应PyQt,为了下载更快速,添加镜像库:

https://pypi.tuna.tsinghua.edu.cn/simple/

找对应的PyQt即可。

当然使用python也可以进行安装,代码如下:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt6pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt6sudo apt install qttools5-dev-tools 

安装完成后,需要在Pycharm关联上外部工具,路径如下:Setting\Tools\...

 这一步主要目的是关联QtDesigner和PyUIC

 其中,Name可以任意取,Program即PyQt Designer对应的路径,工作路径可以填:$ProjectFileDir$

PyUIC:用于将生成的UI文件转为.py文件,因此需要填写参数,如下:

最关键的参数: $FileName$ -o $FileNameWithoutExtension$.py

到这里基本上可以用了,但是最关键的密码算法库还没有加入,这个后面再说,今天先设计UI。

2. PyQt简介

PyQt是一个用Python制作桌面软件的模块,它里面包含了很多组件,如QtCore, QtGui, QtWidgets, QtMultimedia, QtBluetooth, QtNetwork, QtPositioning, Enginio, QtWebSockets, QtWebKit, QtWebKitWidgets, QtXml, QtSvg, QtSql and QtTest.,这次要用的组件总结如下:

  • QtGUI:窗口的事件管理、图形管理等;
  • QtWidget:许多UI小部件,如按钮、标签、文本输入等等;
  • QtCore:核心代码

 首先打开QtDesigner来感性认识一下,Tool->External tool -> QtDesigner

 最开始要明白到底选择MainWindow还是Widget,新建两个窗体看看效果,如下图:

可以看到,MainWindow和Widget都是一个窗口类型的,但是MainWindow包含了QWidget、QMenuBar、QStatusBar等特性,因此如果想要设计一个大且完整的APP,用MainWindow;如果只是比较小的工具,用Widget。

而我们的MuscleV0.1,当然是大工具,得上MainWindow,它的整体逻辑如下:

菜单栏设计不同的功能,Widget则覆盖即将要设计的密码算法。 

在这里,我想设计为每一类算法为一个页面,用到Tab Widget,如下图:

 接下来就需要考虑UI里各种控件的安装,如何适配每个类型算法。

3.小结

QtDesigner里面是图形化界面,对我们理解各个控件非常有帮助。

今天就暂时先到这里,明天继续UI设计。

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

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

相关文章

数据分析:RT-qPCR分析及R语言绘图

介绍 转录组分析是一种用于研究细胞或组织中所有RNA分子的表达水平的高通量技术。完成转录组分析后,科学家们通常需要通过定量实时聚合酶链式反应(qRT-PCR)来验证二代测序(Next-Generation Sequencing, NGS)结果的可靠…

多品类第一!海尔智家618战绩出炉

618已经收官,从今年各大平台取消预售机制、简化流程等新动作来看,“回归用户”成为重中之重。而海尔智家从未离开用户,“以用户为中心”始终是海尔智家不变的坚持。 正因如此,今年618,海尔智家又把“第一”收入囊中。…

.NET C# 八股文 代码阅读(一)

.NET C# 八股文 代码阅读(一) 目录 .NET C# 八股文 代码阅读(一)1 两种获10000个数的方式,哪种效率更高?为什么?2 请说出以下代码AB谁先打印,AB打印的值分别为多少?3 关于…

Django框架数据库ORM查询操作

Django框架在生成数据库的models模型文件后,旧可以在应用中通过ORM来操作数据库了。今天抽空试了下查询语句。以下是常用的查询语句。 以下查询需要引入django的Sum,Count,Q模块 from django.db.models import Sum,Count,Q 导入生成的mode…

【CPP】直接选择排序、堆排序

目录 1.选择排序1.1简介1.2代码1.3分析 2.堆排序2.1简介2.2代码2.3分析 1.选择排序 1.1简介 思路:遍历一遍,选出最大值和最小值的下标,然后与第一个和最后一个数字交换位置。 1.2代码 1.3分析 最好复杂度:O(N^2) 最差复杂度&am…

振动分析-5-基于CNN的机械故障诊断方法

参考基于CNN的机械故障诊断方法 CNN之图像识别 预训练模型迁移学习(Transfer Learning) 基于卷积神经网络(CNN)的深度迁移学习在声发射(AE)监测螺栓连接状况的应用 参考基于CNN的机械故障诊断所面临的困难和…

win 打包java项目为exe一键部署,包括mysql和redis

需求:打包springboot项目在win系统下执行,并且要一键部署和开机启动 把所需的程序放在同一个文件夹 1.jdk文件夹:自己去下载,jdk8的话拿jre目录好了 2.mysql文件夹:是8.0.36版,270M精简版了 3.redis文件夹…

Python限制输入的数范围:如何避免程序崩溃

哈喽,大家好,我是木头左! 有时候用户可能会输入一些不符合预期的数值,导致程序崩溃或者产生错误的结果。为了避免这种情况,需要对用户输入的数值进行限制,确保它们在合理的范围内。本文将介绍如何在Python中…

windows桌面运维----第七天

1、运维有哪些方面选择: 1,桌面运维(以windows为主,砸个水晶头诸如此类) 2,通讯运维(电话) 3,网络运维,包括,路由,交换,防…

Microsoft AI Day:支持开放合作,普及技术应用,推进行业企业智慧化创新

微软在北京举办以“共创AI创新,智启无限可能”为主题的Microsoft AI Day活动,集中展示了在生成式智能技术加速发展普及的过程中,微软取得的最新技术突破与进展,并同步更新了在Microsoft Build 2024全球开发者大会上发布的一系列Az…

[归档]YOLOv8l在rk3588上量化后的细节

归档备查。这是我第一个成功进行量化的模型: D RKNN: [17:53:26.729] Network Layer Information Table D RKNN: [17:53:26.729] ----------------…

人力资源招聘社会校企类型招聘系统校园招聘小程序

校企社会人力资源招聘小程序:开启高效招聘新时代 🚀开篇:打破传统,开启招聘新篇章 在快速发展的现代社会,人力资源招聘已经成为企业和学校共同关注的重要议题。为了更高效、便捷地满足双方的招聘需求,一款…

第58章SOCKET:TCP/IP网络基础

58.1 互联网 互联网会将不同的计算机网络连接起来并允许位于网络中的主机相互之间进行通信。互联网的目标是隐藏不同物理网络的细节以便向互联网中的所有主机呈现一个统一的网络架构,TCP/IP已经成了使用最为广泛的协议套件了, 术语Internet被用来指将全球…

【架构师】听说CDN服务把公司账户余额干趴了?我不服

最近老是看到八卦消息 说是某系统用了cdn的加速服务,某些学员一晚上学员几千个小时(真好学),结果一晚上就欠费,又是几千大洋没了,吓的我赶紧上链接(呸,上控制台看看) 关于…

如何通过安全基线做到网络准入

企业在选择网络准入设备时,应当遵循以下步骤和考虑因素: 明确需求 确定组织对网络准入控制的具体需求,包括控制的设备类型、用户数量、网络规模及安全策略等。考虑是否有特定的合规性要求 研究产品功能 研究不同准入设备的功能和特性&…

【网络安全学习】使用Kali做信息收集-01-<域名信息主机信息>

1.收集开源情报 开源情报(Open Source Intelligence,OSINT)是指从各种公开的渠道中寻找和获取有价值的信息 如:互联网、媒体、社交网络、公共数据库等开源情报具有以下特点: - 丰富性:开源情报涵盖了各种类型和领域的信息 - 可…

关于归一化能量与归一化功率(连续与离散+1)

前言: ① 周期信号 与 直流信号 都是功率信号 ②一个信号可以既不是能量信号也不是功率信号,但不可能既是能量信号又是功率信号 归一化能量 对于一个连续时间信号 ( x(t) ),归一化能量 ( E ) 的定义为: E lim ⁡ T → ∞ ∫ −…

macOS聚集搜索功能开启与关闭

按下command空格弹出 使用搜索 关闭搜索 sudo mdutil -a -i off 启用搜索 sudo mdutil -a -i on

深信服科技:2023网络安全深度洞察及2024年趋势研判报告

2023 年,生成式人工智能和各种大模型迅速应用在网络攻击与对抗中,带来了新型攻防场景和安全威胁。漏洞利用链组合攻击实现攻击效果加成,在国家级对抗中频繁使用。勒索团伙广泛利用多个信创系统漏洞,对企业数据安全与财产安全造成了…

【AI】生成式AI服务器最低配置

【背景】 考虑数据安全,又想用AI赋能企业内部的日常工作,答案只有一个,本地部署。 UI采用open-web-ui,模型用Ollama管理,在局域网做成SAAS服务。要组一个服务器,提供部门内部最多30个的API并发。以下为反复…