百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

python加密算法及GUI实现(python加密解密算法)

off999 2024-09-23 11:34 28 浏览 0 评论

简单的加密算法

import hashlib
str = 'hello world'
bytestring = str.encode('UTF-8') # 生成bytes类型数据
m = hashlib.md5() # 产生MD5加密对象
m.update(bytestring) # 把产生的bytes加入到m对象中
a = m.hexdigest() # 生成密文
print(a)

加密算法的GUI实现

使用QtDesigner绘制GUI框架

如上图所示打开QtDesigner,并绘制如下图框架。

注意:上图框架中的文本框使用的是plainTextEdit。

将绘制好的.ui文件用PyUIC转换为.py文件。

功能实现代码如下:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
import hashlib
# 加密方式
encry_mode = {
 'md5': hashlib.md5,
 'sha1': hashlib.sha1,
 'sha224': hashlib.sha224,
 'sha256': hashlib.sha256,
 'sha384': hashlib.sha384,
 'sha512': hashlib.sha512,
 'sha3_224': hashlib.sha3_224,
 'sha3_256': hashlib.sha3_256,
 'sha3_384': hashlib.sha3_384,
 'sha3_512': hashlib.sha3_512,
}
class Ui_Form(object):
 def setupUi(self, Form):
 Form.setObjectName("Form")
 Form.resize(505, 360)
 self.label = QtWidgets.QLabel(Form)
 self.label.setGeometry(QtCore.QRect(200, 10, 91, 21))
 self.label.setObjectName("label")
 self.label_2 = QtWidgets.QLabel(Form)
 self.label_2.setGeometry(QtCore.QRect(20, 130, 51, 21))
 self.label_2.setObjectName("label_2")
 self.comboBox = QtWidgets.QComboBox(Form)
 self.comboBox.setGeometry(QtCore.QRect(70, 130, 75, 22))
 self.comboBox.setObjectName("comboBox")
 self.comboBox.addItem("")
 self.comboBox.addItem("")
 self.comboBox.addItem("")
 self.comboBox.addItem("")
 self.comboBox.addItem("")
 self.comboBox.addItem("")
 self.comboBox.addItem("")
 self.comboBox.addItem("")
 self.comboBox.addItem("")
 self.comboBox.addItem("")
 self.label_3 = QtWidgets.QLabel(Form)
 self.label_3.setGeometry(QtCore.QRect(170, 130, 31, 21))
 self.label_3.setObjectName("label_3")
 self.comboBox_2 = QtWidgets.QComboBox(Form)
 self.comboBox_2.setGeometry(QtCore.QRect(200, 130, 61, 22))
 self.comboBox_2.setObjectName("comboBox_2")
 self.comboBox_2.addItem("")
 self.comboBox_2.addItem("")
 self.pushButton = QtWidgets.QPushButton(Form)
 self.pushButton.setGeometry(QtCore.QRect(350, 130, 75, 23))
 self.pushButton.setObjectName("pushButton")
 self.label_4 = QtWidgets.QLabel(Form)
 self.label_4.setGeometry(QtCore.QRect(220, 170, 51, 21))
 self.label_4.setObjectName("label_4")
 self.plainTextEdit = QtWidgets.QPlainTextEdit(Form)
 self.plainTextEdit.setGeometry(QtCore.QRect(20, 30, 461, 91))
 self.plainTextEdit.setObjectName("plainTextEdit")
 self.plainTextEdit_2 = QtWidgets.QPlainTextEdit(Form)
 self.plainTextEdit_2.setGeometry(QtCore.QRect(20, 190, 461, 151))
 self.plainTextEdit_2.setObjectName("plainTextEdit_2")
 self.retranslateUi(Form)
 self.pushButton.clicked.connect(self.encryption)
 QtCore.QMetaObject.connectSlotsByName(Form)
 def retranslateUi(self, Form):
 _translate = QtCore.QCoreApplication.translate
 Form.setWindowTitle(_translate("Form", "加密算法"))
 self.label.setText(_translate("Form", "需要加密的内容"))
 self.label_2.setText(_translate("Form", "加密算法"))
 self.comboBox.setItemText(0, _translate("Form", "md5"))
 self.comboBox.setItemText(1, _translate("Form", "sha1"))
 self.comboBox.setItemText(2, _translate("Form", "sha224"))
 self.comboBox.setItemText(3, _translate("Form", "sha256"))
 self.comboBox.setItemText(4, _translate("Form", "sha384"))
 self.comboBox.setItemText(5, _translate("Form", "sha512"))
 self.comboBox.setItemText(6, _translate("Form", "sha3_224"))
 self.comboBox.setItemText(7, _translate("Form", "sha3_256"))
 self.comboBox.setItemText(8, _translate("Form", "sha3_384"))
 self.comboBox.setItemText(9, _translate("Form", "sha3_512"))
 self.label_3.setText(_translate("Form", "编码"))
 self.comboBox_2.setItemText(0, _translate("Form", "utf-8"))
 self.comboBox_2.setItemText(1, _translate("Form", "gbk"))
 self.pushButton.setText(_translate("Form", "加密"))
 self.label_4.setText(_translate("Form", "加密结果"))
 def encryption(self):
 encryption_algorithm = self.comboBox.currentText() # 加密算法
 coding_scheme = self.comboBox_2.currentText() # 编码方式
 string = self.plainTextEdit.toPlainText()
 choice_encryption = encry_mode[encryption_algorithm] # 选择加密方式
 choice_coding = choice_encryption(string.encode(coding_scheme)) # 选择编码方式
 hexadecimal = choice_coding.hexdigest() # 转为十六进制
 self.plainTextEdit_2.setPlainText(hexadecimal)
if __name__ == '__main__':
 app = QtWidgets.QApplication(sys.argv)
 mainWindow = QtWidgets.QMainWindow()
 ui = Ui_Form()
 ui.setupUi(mainWindow)
 mainWindow.show()
 sys.exit(app.exec_())

运行效果

欢迎技术交流,共同进步。

相关推荐

PYTHON-简易计算器的元素介绍

[烟花]了解模板代码的组成importPySimpleGUIassg#1)导入库layout=[[],[],[]]#2)定义布局,确定行数window=sg.Window(&#...

如何使用Python编写一个简单的计算器程序

Python是一种简单易学的编程语言,非常适合初学者入门。本文将教您如何使用Python编写一个简单易用的计算器程序,帮助您快速进行基本的数学运算。无需任何高深的数学知识,只需跟随本文的步骤,即可轻松...

用Python打造一个简洁美观的桌面计算器

最近在学习PythonGUI编程,顺手用Tkinter实现了一个简易桌面计算器,功能虽然不复杂,但非常适合新手练手。如果你正在学习Python,不妨一起来看看这个项目吧!项目背景Tkint...

用Python制作一个带图形界面的计算器

大家好,今天我要带大家使用Python制作一个具有图形界面的计算器应用程序。这个项目不仅可以帮助你巩固Python编程基础,还可以让你初步体验图形化编程的乐趣。我们将使用Python的tkinter库...

用python怎么做最简单的桌面计算器

有网友问,用python怎么做一个最简单的桌面计算器。如果只强调简单,在本机运行,不考虑安全性和容错等的话,你能想到的最简单的方案是什么呢?我觉得用tkinter加eval就够简单的。现在开整。首先创...

说好的《Think Python 2e》更新呢!

编程派微信号:codingpy本周三脱更了,不过发现好多朋友在那天去访问《ThinkPython2e》的在线版,感觉有点对不住呢(实在是没抽出时间来更新)。不过还好本周六的更新可以实现,要不就放一...

构建AI系统(三):使用Python设置您的第一个MCP服务器

是时候动手实践了!在这一部分中,我们将设置开发环境并创建我们的第一个MCP服务器。如果您从未编写过代码,也不用担心-我们将一步一步来。我们要构建什么还记得第1部分中Maria的咖啡馆吗?我们正在创...

函数还是类?90%程序员都踩过的Python认知误区

那个深夜,你在调试代码,一行行检查变量类型。突然,一个TypeError错误蹦出来,你盯着那句"strobjectisnotcallable",咖啡杯在桌上留下了一圈深色...

《Think Python 2e》中译版更新啦!

【回复“python”,送你十本电子书】又到了周三,一周快过去一半了。小编按计划更新《ThinkPython2e》最新版中译。今天更新的是第五章:条件和递归。具体内容请点击阅读原文查看。其他章节的...

Python mysql批量更新数据(兼容动态数据库字段、表名)

一、应用场景上篇文章我们学会了在pymysql事务中批量插入数据的复用代码,既然有了批量插入,那批量更新和批量删除的操作也少不了。二、解决思路为了解决批量删除和批量更新的问题,提出如下思路:所有更新语...

Python Pandas 库:解锁 combine、update 和compare函数的强大功能

在Python的数据处理领域,Pandas库提供了丰富且实用的函数,帮助我们高效地处理和分析数据。今天,咱们就来深入探索Pandas库中四个功能独特的函数:combine、combine_fi...

记录Python3.7.4更新到Python.3.7.8

Python官网Python安装包下载下载文件名称运行后选择升级选项等待安装安装完毕打开IDLE使用Python...

Python千叶网原图爬虫:界面化升级实践

该工具以Python爬虫技术为核心,实现千叶网原图的精准抓取,突破缩略图限制,直达高清资源。新增图形化界面(GUI)后,操作门槛大幅降低:-界面集成URL输入、存储路径选择、线程设置等核心功能,...

__future__模块:Python语言版本演进的桥梁

摘要Python作为一门持续演进的编程语言,在版本迭代过程中不可避免地引入了破坏性变更。__future__模块作为Python兼容性管理的核心机制,为开发者提供了在旧版本中体验新特性的能力。本文深入...

Python 集合隐藏技能:add 与 update 的致命区别,90% 开发者都踩过坑

add函数的使用场景及错误注意添加单一元素:正确示例:pythons={1,2}s.add(3)print(s)#{1,2,3}错误场景:试图添加可变对象(如列表)会报错(Pytho...

取消回复欢迎 发表评论: