pyQT5 AES 加解密

话不多说,先上代码

from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QLabel, QLineEdit, QPushButton
from Crypto.Cipher import AES
import base64
import sys


class CryptoTool(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 创建界面控件
        self.keyLabel = QLabel('Key:')
        self.keyEdit = QLineEdit()
        self.plainTextLabel = QLabel('Plain Text:')
        self.plainTextEdit = QLineEdit()
        self.cipherTextLabel = QLabel('Cipher Text:')
        self.cipherTextEdit = QLineEdit()
        self.encryptButton = QPushButton('Encrypt')
        self.decryptButton = QPushButton('Decrypt')

        # 创建布局管理器
        grid = QGridLayout()
        grid.setSpacing(10)

        # 设置控件位置
        grid.addWidget(self.keyLabel, 1, 0)
        grid.addWidget(self.keyEdit, 1, 1)
        grid.addWidget(self.plainTextLabel, 2, 0)
        grid.addWidget(self.plainTextEdit, 2, 1)
        grid.addWidget(self.cipherTextLabel, 3, 0)
        grid.addWidget(self.cipherTextEdit, 3, 1)
        grid.addWidget(self.encryptButton, 4, 0)
        grid.addWidget(self.decryptButton, 4, 1)

        # 设置主窗口布局
        self.setLayout(grid)

        # 绑定事件处理函数
        self.encryptButton.clicked.connect(self.encrypt)
        self.decryptButton.clicked.connect(self.decrypt)

        # 设置窗口大小和标题
        self.setGeometry(300, 300, 350, 150)
        self.setWindowTitle('Crypto Tool')
        self.show()

    def encrypt(self):
        # 获取输入参数
        key = self.keyEdit.text()
        plainText = self.plainTextEdit.text()

        # 执行加密操作
        iv = b'0000000000000000'
        cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv)
        paddingLen = 16 - (len(plainText) % 16)
        plainText += chr(paddingLen) * paddingLen
        cipherText = base64.b64encode(cipher.encrypt(plainText.encode('utf-8'))).decode('utf-8')

        # 更新输出结果
        self.cipherTextEdit.setText(cipherText)

    def decrypt(self):
        # 获取输入参数
        key = self.keyEdit.text()
        cipherText = self.cipherTextEdit.text()

        # 执行解密操作
        iv = b'0000000000000000'
        cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv)
        plainText = cipher.decrypt(base64.b64decode(cipherText)).decode('utf-8')
        paddingLen = ord(plainText[-1])
        plainText = plainText[:-paddingLen]

        # 更新输出结果
        self.plainTextEdit.setText(plainText)


if __name__ == '__main__':
    # 创建应用程序对象
    app = QApplication(sys.argv)

    # 创建主窗口对象
    cryptoTool = CryptoTool()

    # 进入事件循环
    sys.exit(app.exec_())

你需要的tool

在这里插入图片描述

python3 安装完成

pip简单讲下

当你安装 Python 后,默认会自带 pip 工具。pip 是 Python 包管理工具,类似于 Linux 中的 apt-get 或 yum。

以下是一些常用的 pip 命令:

安装包:pip install package-name
卸载包:pip uninstall package-name
查看已安装的包:pip list
查看指定包信息:pip show package-name
升级指定包:pip install --upgrade package-name
安装指定版本的包:pip install package-name==version
查看包依赖:pip show package-name | grep Requires
安装包并写入 requirements.txt 文件:pip install package-name && pip freeze > requirements.txt
pip 还支持从 PyPI 以外的其他源安装包。例如,从国内源阿里云 PyPI 安装包:
pip install -i https://mirrors.aliyun.com/pypi/simple/ package-name

有些包可能依赖于系统库,因此在安装这些包之前,需要先安装这些库。在 Linux 下,使用包管理器安装相应的开发库;在 Windows 下,可能需要手动安装相应的库,例如 OpenSSL 等。

pip freeze 是一种命令行指令,可以列出当前 Python 环境中安装的所有第三方包及其版本号,并将它们以字符串的形式输出。这个命令通常用于将 Python 项目所依赖的第三方包以及其版本信息保存在 requirements.txt 文件中,以便于在其他环境中重新部署项目时使用。requirements.txt 文件可以通过以下命令生成:
pip freeze > requirements.txt
而在部署时,可以使用以下命令从 requirements.txt 文件中安装所需的第三方包:

pip install -r requirements.txt

文件命名不可以和一些库文件一样,会有冲突

python 文件打包

在 Visual Studio Code 中,您可以使用扩展程序来打包您的 Python 应用程序。常用的 Python 打包扩展包括 PyInstaller、py2exe、cx_Freeze 等。
以下是使用 PyInstaller 打包 Python 应用程序的步骤:
安装 PyInstaller 扩展程序。您可以使用以下命令在终端中安装它:

pip install pyinstaller
打开 Visual Studio Code,并打开您的 Python 项目。
在项目根目录下,创建一个 spec 文件。例如,可以使用以下命令创建一个名为 myapp.spec 的 spec 文件:
pyinstaller -w --name myapp --onefile myapp.py -w 关闭打开时的终端
此命令将创建一个可执行文件 myapp,它将在 Windows 上运行。您可以使用其他选项来指定打包的配置,如输出目录、数据文件等。
在 Visual Studio Code 中,使用 Ctrl+Shift+P 打开命令面板,输入 “Tasks: Configure Task” 并选择 “Create tasks.json file from template”。
在弹出的菜单中,选择 “Others” 并输入以下内容:
{
“version”: “2.0.0”,
“tasks”: [
{
“label”: “pyinstaller”,
“type”: “shell”,
“command”: “pyinstaller -w --name myapp --onefile myapp.py”,
“group”: {
“kind”: “build”,
“isDefault”: true
}
}
]
}
您可以根据需要更改命令。

保存 tasks.json 文件后,使用 Ctrl+Shift+B 快捷键运行打包任务。打包后将在 dist 文件夹下生成可执行文件。
请注意,使用扩展程序打包 Python 应用程序时,需要考虑所使用的操作系统和 Python 版本。有些扩展程序可能不支持所有的操作系统或 Python 版本。
如果你想要生成的可执行文件在启动时不打开终端窗口,可以在打包时传递参数 -w(Windows)或 -c(Mac/Linux)给 pyinstaller,这样打包生成的可执行文件就不会打开终端窗口。

pip list
Package Version


alphabet 0.0.8
altgraph 0.17.3
certifi 2022.12.7
chardet 3.0.4
filemagic 1.6
flake8 6.0.0
freegames 2.5.3
gmssl 3.2.2 使用国密算法,可以使用该依赖库
googletrans 3.0.0
h11 0.9.0
h2 3.2.0
hpack 3.0.0
hstspreload 2023.1.1
httpcore 0.9.1
httpx 0.13.3
hyperframe 5.2.0
idna 2.10
mccabe 0.7.0
pefile 2023.2.7
pip 22.3.1
pycodestyle 2.10.0
pycryptodome 3.17
pycryptodomex 3.17
pyflakes 3.0.1
Pygments 2.14.0
pyinstaller 5.8.0 打包工具
pyinstaller-hooks-contrib 2023.0

PyQt5 5.15.9 pyqt5 需要安装的依赖
PyQt5-Qt5 5.15.2
PyQt5-sip 12.11.1

pywin32-ctypes 0.2.0
rfc3986 1.5.0
setuptools 65.5.0
sniffio 1.3.0
torch 1.13.1
typing_extensions 4.5.0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值