Python小工具——开发一个加密解密的小应用 & windows下可执行文件exe制作

在这里插入图片描述

前言

本篇博客是python开发的使用案例博客,结合一些具体的案例进行阐述,本篇博客介绍如何开发一个专属的加密解密windows小应用。

其他相关的博客文章如下:

引出


基于python开发小工具,加密解密的exe文件,可以用于加密图片,word,压缩包等。

整体设计

流程设计

整体流程为运行程序,打开文件资源管理器,进行文件的选择
(1)如果选择的是要加密的文件,比如.zip、word文件等;则进行加密,加密后的文件后缀为PET;
(2)如果要进行解密,则选择要解密的文件,选择后缀为PET的文件,程序会进行解密;
在加密或解密完成后都会重新打开文件目录,方面进行发送

注:加密和解密后的文件都在同一位置

源码

以下为程序源码,主要用到了窗口,hashlib等相关的包

# encoding:utf-8
import os
import hashlib
import subprocess
from tkinter import Tk
from tkinter.filedialog import askopenfilename

# 默认的加密和解密的密匙
password = "3927"


def getFilePath():
    """
    通过点击鼠标获取要加密的文件
    :return: 要加密的文件的文件路径 + 文件名
    """
    # 创建一个Tkinter窗口
    root = Tk()
    root.withdraw()

    # 弹出文件选择对话框
    file_path = askopenfilename()

    # 打印所选文件的路径
    print(file_path)
    return file_path


def encodeAndDecode(psd, readFile, saveFile):
    """
    进行加密和解密的方法
    :param psd: 加密和解密的密匙,字符串
    :param readFile: 要加密或者解密的文件
    :param saveFile: 保存的文件
    :return:
    """
    openFile = open(readFile, "rb")  # 读取文件
    saveFile = open(saveFile, "wb")  # 写入文件
    # 使用MD5进行加密(双层加密)
    hl = hashlib.md5()
    hl.update(psd.encode(encoding='utf-8'))
    passwordList = hl.hexdigest()

    hl.update(passwordList.encode(encoding='utf-8'))
    passwordList2 = hl.hexdigest()
    passwordData = passwordList + passwordList2

    count = 0  # 索引
    for now in openFile:
        for nowByte in now:
            # 循环遍历出密码的ord值,单个循环
            newByte = nowByte ^ ord(passwordData[count % len(passwordData)])
            count += 1
            saveFile.write(bytes([newByte]))  # 转换
    # 关闭流
    openFile.close()
    saveFile.close()


if __name__ == '__main__':
    print("---------这是一个软件加密工具--------------")
    print("Tips: \n 【加密后的文件后缀统一为PET,请勿修改文件后缀名】")
    print(" 【暂不支持文件夹加密,请选择文件】")
    print(" 【加密后的文件与选择的文件同目录】")
    print("---------文件加密工具 v0.0.1--------------")

    openfilePath = getFilePath()  # input("输入文件路径:")
    print("get: ", openfilePath)

    if 'PET' in openfilePath.split(".")[-1][-3:]:
        # 进行解密
        saveFilePath = str(openfilePath)[:-3]
        print("进行文件的解密", saveFilePath)
        encodeAndDecode(password, openfilePath, saveFilePath)
    else:
        # 进行加密
        saveFileName = os.path.basename(openfilePath) + "PET"
        saveFilePath = os.path.dirname(openfilePath) + "/" + saveFileName
        print("进行文件的加密: ", saveFilePath)
        encodeAndDecode(password, openfilePath, saveFilePath)

    # 程序最后定位到指定位置
    print("打开文件保存的位置")
    pathGet = os.path.dirname(openfilePath)
    path = str(pathGet).replace('/', "\\")
    subprocess.Popen(f'explorer {path}')

制作成可执行exe文件

icon图标

在制作执行文件exe的时候,可以设置一下icon图标,这样看起来比较高大上

https://www.iconfinder.com/

在这里插入图片描述

比如:加个icon图标

改进后:pyinstaller -F --icon=subway.ico hello.py

在这里插入图片描述

制作成exe

详细的步骤参考博客:
Python封装——如何把python代码打包成一个可执行的.exe文件,Pyinstaller

PyInstaller 支持的常用选项
-h,–help产生单个的可执行文件
-D,–onedir产生一个目录(包含多个文件)作为可执行程序
-a,–ascii不包含 Unicode 字符集支持
-d,–debug产生 debug 版本的可执行文件
-w,–windowed, --noconsolc指定程序运行时不显示命令行窗口(仅对 Windows 有效)
-c,–nowindowed, --console指定使用命令行窗口运行程序(仅对 Windows 有效)
-o DIR,–out=DIR指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
-p DIR,–path=DIR设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。
也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径
-n NAME, --name=NAME指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字
pyinstaller -F --icon=my.ico securityTool.py

在这里插入图片描述

使用指南

1.双击exe运行

制作成exe文件后,双击运行,后台会显示一些日志,在弹出的文件资源选择框中选择要加密的文件;

在这里插入图片描述

2.选中要加密的文件

选中要加密的文件后,程序会自动进行加密,加密后的文件会放在同一目录中;

在这里插入图片描述

3.加密文件发送

加密后的文件发送给接收方即可

在这里插入图片描述

4.接收方进行解密

接收方运行exe文件,然后选择要解密的文件,后缀为PET,选择后程序会进行解密,解密后的文件与被解密的文件在同一目录下。

在这里插入图片描述

解密成功

在这里插入图片描述


总结

基于python开发小工具,加密解密的exe文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arya's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值