Как добавить алгоритм хеширования md 5 к этой программе?

Рейтинг: -1Ответов: 1Опубликовано: 10.01.2023
import hashlib
import sys
from datetime import datetime

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog, QMessageBox, QApplication, \
    QMainWindow


class MyWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setEnabled(True)
        MainWindow.resize(800, 608)
        MainWindow.setStyleSheet("background-color: #7FFF00")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(220, 80, 301, 61))
        self.lineEdit.setStyleSheet("background-color: #22222e;\n"
                                    "border: 2px solid #6B8E23;\n"
                                    "border-radius: 30;\n"
                                    "color: white")
        self.lineEdit.setObjectName("lineEdit")

        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(550, 80, 151, 61))
        self.pushButton.setStyleSheet("QPushButton {\n"
                                      "    color: white;\n"
                                      "    background-color:#6B8E23;\n"
                                      "    border-radius: 30;    \n"
                                      "}\n"
                                      "\n"
                                      "QPushButton:pressed {\n"
                                      "background-color: #90EE90\n"
                                      "}")
        self.pushButton.setObjectName("pushButton")

        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(220, 210, 311, 31))
        self.comboBox.setStyleSheet("background-color: #22222e;\n"
                                    "border: 2px solid #6B8E23;\n"
                                    "border-radius: 30;\n"
                                    "color: white")
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        # !!!          было              стало
        # +++        lineEdit_2  ---->  lineEdit_3
        self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_3.setGeometry(QtCore.QRect(220, 300, 301, 61))
        self.lineEdit_3.setStyleSheet("background-color: #22222e;\n"
                                      "border: 2px solid #6B8E23;\n"
                                      "border-radius: 30;\n"
                                      "color: white")
        self.lineEdit_3.setObjectName("lineEdit_3")

        # !!!          было              стало
        # +++        lineEdit_3  ----> lineEdit_2
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(220, 420, 311, 61))
        self.lineEdit_2.setStyleSheet("background-color: #22222e;\n"
                                      "border: 2px solid #6B8E23;\n"
                                      "border-radius: 30;\n"
                                      "color: white")
        self.lineEdit_2.setObjectName("lineEdit_2")

        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(300, 500, 151, 61))
        self.pushButton_2.setStyleSheet("QPushButton {\n"
                                        "    color: white;\n"
                                        "    background-color:#6B8E23;\n"
                                        "    border-radius: 30;    \n"
                                        "}\n"
                                        "\n"
                                        "QPushButton:pressed {\n"
                                        "background-color: #90EE90\n"
                                        "}")
        self.pushButton_2.setObjectName("pushButton_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(270, 50, 261, 20))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_3.setFont(font)
        self.label_3.setStyleSheet("QLabel {\n"
                                   "    color: white;\n"
                                   "    border-radius: 30;\n"
                                   "\n"
                                   "}")
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(240, 180, 261, 20))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_4.setFont(font)
        self.label_4.setStyleSheet("QLabel {\n"
                                   "    color: white;\n"
                                   "    border-radius: 30;\n"
                                   "\n"
                                   "}")
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(230, 270, 261, 20))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_5.setFont(font)
        self.label_5.setStyleSheet("QLabel {\n"
                                   "    color: white;\n"
                                   "    border-radius: 30;\n"
                                   "\n"
                                   "}")
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(250, 390, 261, 20))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_6.setFont(font)
        self.label_6.setStyleSheet("QLabel {\n"
                                   "    color: white;\n"
                                   "    border-radius: 30;\n"
                                   "\n"
                                   "}")
        self.label_6.setObjectName("label_6")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        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", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "Выбрать файл"))
        self.comboBox.setItemText(0, _translate("MainWindow", "Зашифровать"))
        self.comboBox.setItemText(1, _translate("MainWindow", "Расшифровать"))
        self.comboBox.setItemText(2, _translate("MainWindow", "Захешировать"))
        # ???    self.lineEdit_3.setText(_translate("MainWindow", "lineEdit_3"))
        self.pushButton_2.setText(_translate("MainWindow", "Запустить"))
        self.label_3.setText(_translate("MainWindow", "Введите имя файла"))
        self.label_4.setText(_translate("MainWindow", "            Выберите тип"))
        self.label_5.setText(_translate("MainWindow", "      Введите ключ от 1 до 90"))
        self.label_6.setText(_translate("MainWindow", "            Куда вывести"))


class Engine(QMainWindow, MyWindow):
    def __init__(self) -> None:
        super().__init__()
        self.setupUi(self)

        self.pushButton.clicked.connect(self.openFileNameDialog)

        self.pushButton_2.clicked.connect(self.ciphering)  # +++  !!!
    def openFileNameDialog(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        fileName, _ = QFileDialog.getOpenFileName(
            self,
            "Select Text file",
            "",
            "Text Files (*.txt)",
            options=options
        )
        if not fileName:
            fileName = None
        print(fileName)
        self.lineEdit.setText(fileName)  # +++ lineEdit

    def ciphering(self):
        if not self.lineEdit.text() or \
                not self.lineEdit_2.text() or \
                not self.lineEdit_3.text():
            msg = QMessageBox.information(None, 'Внимание', 'Заполните поля ввода.')
            return
        self.filename = self.lineEdit.text()  # +++
        self.optfilename = self.lineEdit_2.text()  # +++
        self.process = self.comboBox.currentText()  # +++
        self.key = self.lineEdit_3.text()  # +++
        assert isinstance(self.key, object)
        password_key = int(self.key)
        store = ''
        Letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz' \
                  '!@#$%&*(){}[]<>/\|";:\n-=+.,?0123456789'
        now = datetime.now()
        print(now)

        option_1 = self.process
        if option_1 == 'Зашифровать':
            print('Хорошо, сэр!.. Вы выбрали({0})'.format(option_1))
            file = self.filename
            if password_key == 0:
                QMessageBox.critical(self, "Введен неправильный ключ шифрования",
                                     "Введите ключ шифрования в диапазоне от 1 до 90.")
            else:
                print("ключ пароля: ", password_key)
                if file.endswith('.txt'):
                    try:
                        file = open(file, 'r').read()
                        print('Выходной файл поздравления сохранен.')
                    except:
                        print('Ошибка имени файла: Пожалуйста! Введите имя файла в текстовой форме/Введите правильный адрес файла')
                    for i in file:
                        if i in Letters:
                            number = Letters.find(i)
                            try:
                                number = number + int(password_key)
                            except:
                                print('Ошибка ключа: вы вводите неверный ключ.')
                                break
                            if number >= len(Letters):
                                number = number - len(Letters)
                            elif number < 0:
                                number = number + len(Letters)
                            store = store + Letters[number]
                        else:
                            store += i
                        with open('{}.txt'.format(self.optfilename), 'w') as f: f.write(store)
                    QMessageBox.about(self.process, "Процесс завершен., Поздравляем! {} успешно выполнено.".format(self.process),
                                      "123")
                else:
                    QMessageBox.critical(self, "Ошибка имени файла», «Пожалуйста! Введите только текстовую форму.")

        elif option_1 == 'Расшифровать':
            print(' Вы выбрали({0})'.format(option_1))

            file = self.filename
            if password_key == 0:
                QMessageBox.critical(self,
                                     "Введен неверный ключ шифрования», «Введите ключ шифрования в диапазоне от 1 до 90.")
            else:
                if file.endswith('.txt'):
                    try:
                        file = open(file, 'r').read()
                        print('Выходной файл сохранен.')
                    except:
                        print('Ошибка имени файла: Пожалуйста! Введите имя файла в формате txt.')

                    for i in file:
                        if i in Letters:
                            number = Letters.find(i)
                            try:
                                number = number - int(password_key)
                            except:
                                print('Ошибка ключа: вы вводите неверный ключ.')
                                break
                            if number >= len(Letters):
                                number = number - len(Letters)
                            elif number < 0:
                                number = number + len(Letters)
                            store = store + Letters[number]
                        else:
                            store += i
                        with open('{}.txt'.format(self.optfilename), 'w') as f: f.write(store)
                    QMessageBox.about(self, "Процесс завершился.", "Поздравляю!!! {} успешно.".format(self.process))
                else:
                    QMessageBox.critical(self, "Ошибка файла", "Введите txt форму .")


if __name__ == "__main__":
    App = QApplication(sys.argv)
    window = Engine()
    window.show()
    sys.exit(App.exec())

Ответы

▲ 0
h=hashlib.new('md5')
h.update(.....