PYQT5+python3.6+QT编写一个带ui的加密解密小程序

需要的环境为python3.6、pyqt5(建议直接安装Anaconda,因为安好python后自带pyqt5),还有QTcreator(用来写ui界面),还需要一个编辑器(sublime或者notepad++均可,我使用的是PyCharm,毕竟IDE用起来顺手)。使用到的工具就是如下图:

《PYQT5+python3.6+QT编写一个带ui的加密解密小程序》《PYQT5+python3.6+QT编写一个带ui的加密解密小程序》

  • 1、先做个ui界面

打开QT,新建一个项目,打开设计界面,可以看到很多控件直接可以拖拽到右面的界面上,在编辑界面中可以看到直接生成了ui代码。

《PYQT5+python3.6+QT编写一个带ui的加密解密小程序》               《PYQT5+python3.6+QT编写一个带ui的加密解密小程序》

《PYQT5+python3.6+QT编写一个带ui的加密解密小程序》《PYQT5+python3.6+QT编写一个带ui的加密解密小程序》


上图是需要完成的ui,拖拽一下就可以完成

《PYQT5+python3.6+QT编写一个带ui的加密解密小程序》

要注意在右侧对各个控件命好名字,能自己区分(请无视我的命名方法= =),后期函数调用时需要用到

《PYQT5+python3.6+QT编写一个带ui的加密解密小程序》《PYQT5+python3.6+QT编写一个带ui的加密解密小程序》

完成后到项目所在目录下找到mainwindow.ui文件

《PYQT5+python3.6+QT编写一个带ui的加密解密小程序》《PYQT5+python3.6+QT编写一个带ui的加密解密小程序》

在cmd中打开当前目录,使用命令将xml代码转换为python代码

pyuic5 -o a.py mainwindow.ui


  • 2、打开pycharm添加其他代码

新建一个工程,在工程下建立一个包,然后会自动生成__init__.py,把上边的a.py拖入包中

《PYQT5+python3.6+QT编写一个带ui的加密解密小程序》《PYQT5+python3.6+QT编写一个带ui的加密解密小程序》

代码

# -*- coding: utf-8 -*-

import re
import sys
from PyQt5 import QtCore, QtWidgets
from a import Ui_MainWindow

class MyForm(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.initUi()   #绑定槽函数

    def initUi(self):   #每个按钮对应不同函数
        self.ui.pushButton_1_Kaisa.clicked.connect(self.kaisaEncryption)
        self.ui.pushButton_2_Kaisa.clicked.connect(self.kaisaDecryption)
        self.ui.pushButton_1_Weiji.clicked.connect(self.weijiEncryption)
        self.ui.pushButton_2_Weiji.clicked.connect(self.weijiDecryption)
        self.ui.pushButton_1_fangshe.clicked.connect(self.fangsheEncryption)
        self.ui.pushButton_2_fangshe.clicked.connect(self.fangsheDecryption)
        self.ui.pushButton_1_peigen.clicked.connect(self.peigenEncryption)
        self.ui.pushButton_2_peigen.clicked.connect(self.peigenDecryption)

    def fangsheEncryption(self):
        text = self.ui.textEdit_Input.toPlainText()
        fa = int(self.ui.lineEdit_fa.text())
        fb = int(self.ui.lineEdit_fb.text())
        fm = int(self.ui.lineEdit_fm.text())
        tlen = len(text)

        if text != '' and fm != 0:
            result = ""
            for i in range(0, tlen):
                result += chr((fa*(ord(text[i])-ord('a'))+fb)%fm+ord('a'))
            self.ui.textEdit_Output.setText(result)



    def fangsheDecryption(self):
        text = self.ui.textEdit_Input.toPlainText()
        fa = int(self.ui.lineEdit_fa.text())
        fb2 = int(self.ui.lineEdit_fb.text())
        fm2 = int(self.ui.lineEdit_fm.text())
        fa2 = 0
        for i in range(0, 100):
            if int((i*fm2+1)/fa)*fa%fm2 == 1:
                fa2 = int((i*fm2+1)/fa)
                break
        self.ui.lineEdit_fa_2.setText(str(fa2))
        self.ui.lineEdit_fb_2.setText(str(fb2))
        self.ui.lineEdit_fm_2.setText(str(fm2))

        tlen = len(text)

        if text != '':
            result = ""
            for i in range(0, tlen):
                result += chr((fa2*((ord(text[i]) - ord('a')) - fb2)) % fm2+ord('a'))
            self.ui.textEdit_Output.setText(result)

    def peigenEncryption(self):
        text = self.ui.textEdit_Input.toPlainText()
        result = ''
        for i in text:
            result += '{0:05b}'.format(ord(i)-ord('a'))
        # self.ui.textEdit_Output.setText(result)
        res = ''
        for i in result:
            if i=='0':
                res+='A'
            else:
                res+='B'
        self.ui.textEdit_Output.setText(res)


    def peigenDecryption(self):
        text = self.ui.textEdit_Input.toPlainText()
        text = text.replace('A','0').replace('B','1')
        result = ''
        for i in range(0, len(text), 5):
            b = text[i : i+5]
            result += chr(int(b,2)+ord('a'))
        self.ui.textEdit_Output.setText(result)

    def weijiEncrypt(self, text, key):
        tlen = len(text)
        klen = len(key)
        result = ""

        for i in range(0, tlen):
            result += chr((ord(text[i]) + ord(key[i % klen]) - 2 * ord('a')) % 26 + ord('a'))

        return result

    def weijiDecrypt(self, text, key):
        tlen = len(text)
        klen = len(key)
        result = ""

        for i in range(0, tlen):
            result += chr((ord(text[i]) - ord(key[i % klen]) + 26) % 26 + ord('a'))

        return result

    def weijiEncryption(self):
        text = self.ui.textEdit_Input.toPlainText()
        key = self.ui.lineEdit.text()
        if text != '' and key != '':
            text2 = self.weijiEncrypt(text, key)
            self.ui.textEdit_Output.setText(text2)


    def weijiDecryption(self):
        text = self.ui.textEdit_Input.toPlainText()
        key = self.ui.lineEdit.text()

        if text != '' and key != '':
            text2 = self.weijiDecrypt(text, key)
            self.ui.textEdit_Output.setText(text2)

    def kaisaEncryption(self):
        text = self.ui.textEdit_Input.toPlainText()
        temp = self.ui.spinBox.text()

        if text != '':
            text2 = self.kaisaEncrypt(text, temp)
            self.ui.textEdit_Output.setText(text2)

    def kaisaEncrypt(self, text, temp):
        tlen = len(text)
        result = ""

        for i in range(0, tlen):
            result += chr((ord(text[i]) - ord('a') + int(temp)) % 26 + ord('a'))

        return result

    def kaisaDecryption(self):
        text = self.ui.textEdit_Input.toPlainText()
        temp = self.ui.spinBox.text()

        if text != '':
            text2 = self.kaisaDecrypt(text, temp)
            self.ui.textEdit_Output.setText(text2)

    def kaisaDecrypt(self, text, temp):
        tlen = len(text)
        result = ""

        for i in range(0, tlen):
            result += chr((ord(text[i]) - ord('a') - int(temp)+26) % 26 + ord('a'))

        return result

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    myapp = MyForm()
    myapp.show()
    sys.exit(app.exec_())
a.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.6
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(521, 410)
        MainWindow.setFocusPolicy(QtCore.Qt.WheelFocus)
        self.centralWidget = QtWidgets.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.label = QtWidgets.QLabel(self.centralWidget)
        self.label.setGeometry(QtCore.QRect(50, 10, 91, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralWidget)
        self.label_2.setGeometry(QtCore.QRect(200, 20, 71, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(12)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralWidget)
        self.label_3.setGeometry(QtCore.QRect(200, 190, 71, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(12)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(self.centralWidget)
        self.label_4.setGeometry(QtCore.QRect(20, 30, 51, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        self.label_4.setFont(font)
        self.label_4.setObjectName("label_4")
        self.spinBox = QtWidgets.QSpinBox(self.centralWidget)
        self.spinBox.setGeometry(QtCore.QRect(20, 50, 42, 22))
        self.spinBox.setObjectName("spinBox")
        self.textEdit_Input = QtWidgets.QTextEdit(self.centralWidget)
        self.textEdit_Input.setGeometry(QtCore.QRect(200, 50, 291, 111))
        font = QtGui.QFont()
        font.setFamily("隶书")
        font.setPointSize(12)
        self.textEdit_Input.setFont(font)
        self.textEdit_Input.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.textEdit_Input.setObjectName("textEdit_Input")
        self.textEdit_Output = QtWidgets.QTextEdit(self.centralWidget)
        self.textEdit_Output.setGeometry(QtCore.QRect(200, 220, 291, 111))
        font = QtGui.QFont()
        font.setFamily("隶书")
        font.setPointSize(12)
        self.textEdit_Output.setFont(font)
        self.textEdit_Output.setObjectName("textEdit_Output")
        self.pushButton_1_Kaisa = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_1_Kaisa.setGeometry(QtCore.QRect(70, 50, 41, 23))
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(10)
        self.pushButton_1_Kaisa.setFont(font)
        self.pushButton_1_Kaisa.setObjectName("pushButton_1_Kaisa")
        self.pushButton_2_Kaisa = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_2_Kaisa.setGeometry(QtCore.QRect(120, 50, 41, 23))
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(10)
        self.pushButton_2_Kaisa.setFont(font)
        self.pushButton_2_Kaisa.setObjectName("pushButton_2_Kaisa")
        self.label_5 = QtWidgets.QLabel(self.centralWidget)
        self.label_5.setGeometry(QtCore.QRect(30, 80, 131, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_5.setFont(font)
        self.label_5.setObjectName("label_5")
        self.pushButton_1_Weiji = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_1_Weiji.setGeometry(QtCore.QRect(70, 150, 41, 23))
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(10)
        self.pushButton_1_Weiji.setFont(font)
        self.pushButton_1_Weiji.setObjectName("pushButton_1_Weiji")
        self.label_6 = QtWidgets.QLabel(self.centralWidget)
        self.label_6.setGeometry(QtCore.QRect(20, 100, 51, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        self.label_6.setFont(font)
        self.label_6.setObjectName("label_6")
        self.pushButton_2_Weiji = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_2_Weiji.setGeometry(QtCore.QRect(120, 150, 41, 23))
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(10)
        self.pushButton_2_Weiji.setFont(font)
        self.pushButton_2_Weiji.setObjectName("pushButton_2_Weiji")
        self.lineEdit = QtWidgets.QLineEdit(self.centralWidget)
        self.lineEdit.setGeometry(QtCore.QRect(20, 120, 141, 21))
        font = QtGui.QFont()
        font.setFamily("隶书")
        font.setPointSize(12)
        self.lineEdit.setFont(font)
        self.lineEdit.setObjectName("lineEdit")
        self.label_7 = QtWidgets.QLabel(self.centralWidget)
        self.label_7.setGeometry(QtCore.QRect(50, 180, 81, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_7.setFont(font)
        self.label_7.setObjectName("label_7")
        self.label_8 = QtWidgets.QLabel(self.centralWidget)
        self.label_8.setGeometry(QtCore.QRect(20, 200, 151, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        self.label_8.setFont(font)
        self.label_8.setObjectName("label_8")
        self.label_9 = QtWidgets.QLabel(self.centralWidget)
        self.label_9.setGeometry(QtCore.QRect(10, 220, 41, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        self.label_9.setFont(font)
        self.label_9.setObjectName("label_9")
        self.lineEdit_fa = QtWidgets.QLineEdit(self.centralWidget)
        self.lineEdit_fa.setGeometry(QtCore.QRect(50, 220, 21, 20))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(12)
        self.lineEdit_fa.setFont(font)
        self.lineEdit_fa.setObjectName("lineEdit_fa")
        self.label_10 = QtWidgets.QLabel(self.centralWidget)
        self.label_10.setGeometry(QtCore.QRect(80, 220, 16, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        self.label_10.setFont(font)
        self.label_10.setObjectName("label_10")
        self.lineEdit_fb = QtWidgets.QLineEdit(self.centralWidget)
        self.lineEdit_fb.setGeometry(QtCore.QRect(100, 220, 21, 20))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(12)
        self.lineEdit_fb.setFont(font)
        self.lineEdit_fb.setObjectName("lineEdit_fb")
        self.label_11 = QtWidgets.QLabel(self.centralWidget)
        self.label_11.setGeometry(QtCore.QRect(130, 220, 41, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        self.label_11.setFont(font)
        self.label_11.setObjectName("label_11")
        self.lineEdit_fm = QtWidgets.QLineEdit(self.centralWidget)
        self.lineEdit_fm.setGeometry(QtCore.QRect(160, 220, 21, 20))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(12)
        self.lineEdit_fm.setFont(font)
        self.lineEdit_fm.setObjectName("lineEdit_fm")
        self.pushButton_2_fangshe = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_2_fangshe.setGeometry(QtCore.QRect(120, 280, 41, 23))
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(10)
        self.pushButton_2_fangshe.setFont(font)
        self.pushButton_2_fangshe.setObjectName("pushButton_2_fangshe")
        self.pushButton_1_fangshe = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_1_fangshe.setGeometry(QtCore.QRect(70, 280, 41, 23))
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(10)
        self.pushButton_1_fangshe.setFont(font)
        self.pushButton_1_fangshe.setObjectName("pushButton_1_fangshe")
        self.label_12 = QtWidgets.QLabel(self.centralWidget)
        self.label_12.setGeometry(QtCore.QRect(10, 250, 41, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        self.label_12.setFont(font)
        self.label_12.setObjectName("label_12")
        self.label_13 = QtWidgets.QLabel(self.centralWidget)
        self.label_13.setGeometry(QtCore.QRect(70, 250, 21, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        self.label_13.setFont(font)
        self.label_13.setObjectName("label_13")
        self.lineEdit_fa_2 = QtWidgets.QLineEdit(self.centralWidget)
        self.lineEdit_fa_2.setGeometry(QtCore.QRect(50, 250, 21, 20))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(12)
        self.lineEdit_fa_2.setFont(font)
        self.lineEdit_fa_2.setObjectName("lineEdit_fa_2")
        self.lineEdit_fb_2 = QtWidgets.QLineEdit(self.centralWidget)
        self.lineEdit_fb_2.setGeometry(QtCore.QRect(90, 250, 21, 20))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(12)
        self.lineEdit_fb_2.setFont(font)
        self.lineEdit_fb_2.setObjectName("lineEdit_fb_2")
        self.lineEdit_fm_2 = QtWidgets.QLineEdit(self.centralWidget)
        self.lineEdit_fm_2.setGeometry(QtCore.QRect(150, 250, 21, 20))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(12)
        self.lineEdit_fm_2.setFont(font)
        self.lineEdit_fm_2.setObjectName("lineEdit_fm_2")
        self.label_14 = QtWidgets.QLabel(self.centralWidget)
        self.label_14.setGeometry(QtCore.QRect(120, 250, 41, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        self.label_14.setFont(font)
        self.label_14.setObjectName("label_14")
        self.label_15 = QtWidgets.QLabel(self.centralWidget)
        self.label_15.setGeometry(QtCore.QRect(50, 310, 81, 21))
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label_15.setFont(font)
        self.label_15.setObjectName("label_15")
        self.pushButton_2_peigen = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_2_peigen.setGeometry(QtCore.QRect(120, 340, 41, 23))
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(10)
        self.pushButton_2_peigen.setFont(font)
        self.pushButton_2_peigen.setObjectName("pushButton_2_peigen")
        self.pushButton_1_peigen = QtWidgets.QPushButton(self.centralWidget)
        self.pushButton_1_peigen.setGeometry(QtCore.QRect(70, 340, 41, 23))
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(10)
        self.pushButton_1_peigen.setFont(font)
        self.pushButton_1_peigen.setObjectName("pushButton_1_peigen")
        MainWindow.setCentralWidget(self.centralWidget)
        self.mainToolBar = QtWidgets.QToolBar(MainWindow)
        self.mainToolBar.setObjectName("mainToolBar")
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
        self.statusBar = QtWidgets.QStatusBar(MainWindow)
        self.statusBar.setObjectName("statusBar")
        MainWindow.setStatusBar(self.statusBar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "加解密"))
        self.label.setText(_translate("MainWindow", "凯撒密码"))
        self.label_2.setText(_translate("MainWindow", "输入文本"))
        self.label_3.setText(_translate("MainWindow", "输出文本"))
        self.label_4.setText(_translate("MainWindow", "位移量"))
        self.pushButton_1_Kaisa.setText(_translate("MainWindow", "加密"))
        self.pushButton_2_Kaisa.setText(_translate("MainWindow", "解密"))
        self.label_5.setText(_translate("MainWindow", "维吉尼亚密码"))
        self.pushButton_1_Weiji.setText(_translate("MainWindow", "加密"))
        self.label_6.setText(_translate("MainWindow", "密钥"))
        self.pushButton_2_Weiji.setText(_translate("MainWindow", "解密"))
        self.label_7.setText(_translate("MainWindow", "仿射密码"))
        self.label_8.setText(_translate("MainWindow", "加解密函数(参数均为整数)"))
        self.label_9.setText(_translate("MainWindow", "E(x)=("))
        self.label_10.setText(_translate("MainWindow", "x+"))
        self.label_11.setText(_translate("MainWindow", ")mod"))
        self.pushButton_2_fangshe.setText(_translate("MainWindow", "解密"))
        self.pushButton_1_fangshe.setText(_translate("MainWindow", "加密"))
        self.label_12.setText(_translate("MainWindow", "D(x)="))
        self.label_13.setText(_translate("MainWindow", "(x-"))
        self.label_14.setText(_translate("MainWindow", ")mod"))
        self.label_15.setText(_translate("MainWindow", "培根密码"))
        self.pushButton_2_peigen.setText(_translate("MainWindow", "解密"))
        self.pushButton_1_peigen.setText(_translate("MainWindow", "加密"))
 

点此下载源码

    原文作者:维吉尼亚加密问题
    原文地址: https://blog.csdn.net/machong_mc/article/details/59510742
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞