APP下载

python加密演算法及GUI实现

消息来源:baojiabao.com 作者: 发布时间:2026-05-21

报价宝综合消息python加密演算法及GUI实现

简单的加密算法

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_())

执行效果

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

2019-12-24 12:19:00

相关文章