一个简单的加解密脚本
# 一个简单的加解密脚本### 用途
在使用网盘的时候会对文件类型进行检查,这个脚本主要是通过修改文件类型标志来实现修改文件类型的,主要是zip格式和txt格式文件的互换。
### 用法
将python脚本和待加密或解密的文件放在同一个文件夹中,多次运行该脚本即可实现加密和解密。得到的zip可以直接解压缩然后查看文件。
### 注意
1. 此脚本需要结合python环境;
2. 不要随意修改文件名,这个可以看看代码。
3. 如果运行出错很有可能是路径问题,建议再新建文件夹中操作
### 示例图片
今天突然发现微博图床不能用了,就不发图片的,内容也不难,看代码部分就行
### 代码
```python
import os
# 2022-06-12 修改zip文件为txt,方便阿里云盘的分享限制
# 目前阿里云通过文件后缀名和文件格式信息来判断文件是否受限
# zip文件的格式信息为(0x04034b50)小端表示为504b0304,是使用范围最广的一种压缩格式
# 解决方法是将50替换为00(其他的十六也可以),将zip改为txt或其他可分享的格式
def encodeZip(fn):
"""
将不可分享的zip加密为可分享的txt
加密:修改.zip文件并对其重命名为5.txt
:param fn: 要处理文件的名称
"""
with open(fn, 'rb+') as ff:
if ff.writable():
ff.write(b'\x00')
# 修改后进行重命名为xxx5.txt
dst = fn+'5.txt'
os.rename(fn, dst)
def decodeTxt(fn):
"""
将无法使用的txt解密为可使用的zip压缩文件
解密:修改.zip文件并对其重命名为5.txt
:param fn: 要处理文件的名称
"""
with open(fn, 'rb+') as ff:
if ff.writable():
ff.write(b'\x50')
# 将名为为xxx5.txt 改为 xxx.zip
dst = fn+'.zip'
os.rename(fn, dst)
if __name__ == "__main__":
dirs = os.listdir()
for dr in dirs:
if dr[-3:] == "zip":
encodeZip(dr)
if dr[-5:] == "5.txt":
decodeTxt(dr)
```
还真是简单直接 简单就是好,要的就是这个效果 eaglexiong 发表于 2023-4-14 21:41
简单就是好,要的就是这个效果
有个缺点就是不能直接运行,我在想能不能写成exe程序 youkan_pj 发表于 2023-4-15 08:57
有个缺点就是不能直接运行,我在想能不能写成exe程序
请问下载后如何解密呢?我的理解是:是不是我运行一次加密后就可以上传,下载后再运行一次就解密了?
另外如果要封装成exe程序,最好给代码加个gui页面,页面两个按钮,一个按钮叫选择文件,可以选择文件路径,另一个按钮叫加解密,执行你的程序。执行完成后再gui页面上有提示语“文件已加解密完成”字样就人性化了。另外我平时用的python打包工具叫“auto-py-to-exe”,很好用。 youkan_pj 发表于 2023-4-15 08:57
有个缺点就是不能直接运行,我在想能不能写成exe程序
在你代码基础之上增加了GUI页面,选择加密或者解密时可以选择要加密或解密的文件。代码如下:
import os
import tkinter as tk
from tkinter import messagebox
from tkinter import filedialog
def encodeZip(fn):
"""
将不可分享的 zip 加密为可分享的 txt
加密:修改.zip 文件并对其重命名为 5.txt
:param fn: 要处理文件的名称
"""
with open(fn, 'rb+') as ff:
if ff.writable():
ff.write(b'\x00')
# 修改后进行重命名为 xxx5.txt
dst = fn+'5.txt'
os.rename(fn, dst)
messagebox.showinfo("完成", "文件已成功加密")
def decodeTxt(fn):
"""
将无法使用的 txt 解密为可使用的 zip 压缩文件
解密:修改.zip 文件并对其重命名为 5.txt
:param fn: 要处理文件的名称
"""
with open(fn, 'rb+') as ff:
if ff.writable():
ff.write(b'\x50')
# 将名为为 xxx5.txt 改为 xxx.zip
dst = fn+'.zip'
os.rename(fn, dst)
messagebox.showinfo("完成", "文件已成功解密")
if __name__ == "__main__":
# 创建 GUI 界面
root = tk.Tk()
root.title("文件加解密")
# 创建画布
canvas = tk.Canvas(root, width=275, height=100, bg='white')
canvas.pack()
# 创建文本框
tk.Button(root, text="加密", command=lambda: encodeZip(filedialog.asksaveasfilename(title="选择要加密的文件"))).pack()
# 创建按钮
tk.Button(root, text="解密", command=lambda: decodeTxt(filedialog.asksaveasfilename(title="选择要解密的文件"))).pack()
# 进入消息循环
root.mainloop()
kewin525 发表于 2023-4-22 14:02
在你代码基础之上增加了GUI页面,选择加密或者解密时可以选择要加密或解密的文件。代码如下:
之前花了一天写了一个exe的发了个帖子,被审核出来留了qq邮箱就删除了,我偶然测试了一下那个exe处理2.5G的压缩包时崩了,就没有想等有空的时候修复一下再传上来。审核确实牛逼很用心,保护网页权益很认真。 kewin525 发表于 2023-4-22 11:00
请问下载后如何解密呢?我的理解是:是不是我运行一次加密后就可以上传,下载后再运行一次就解密了?
另 ...
对,看程序的逻辑就是通过判断后缀来处理的 kewin525 发表于 2023-4-22 11:00
请问下载后如何解密呢?我的理解是:是不是我运行一次加密后就可以上传,下载后再运行一次就解密了?
另 ...
你也可以自己发个帖子,备注一个引用或参考自这就行。
页:
[1]