python做一个【批量加密解密】软件,让你的文件有程序加密保护,在也不怕别人乱翻你的东西了
今天这个批量加解密很简单,和上一个【软件加密】python制作一个超强的加密软件_₰₯₮ 的博客-CSDN博客文章结合了一下,然后优化了一下循环文件夹的所有文件,然后捉个进行加解密def iterbrowse(path):for home, dirs, files in os.walk(path):for filename in files:yield os.path.join(home, fil
今天这个批量加解密很简单,和上一个【软件加密】python制作一个超强的加密软件_₰₯₮ 的博客-CSDN博客
文章结合了一下,然后优化了一下
循环文件夹的所有文件,然后捉个进行加解密
def iterbrowse(path):
for home, dirs, files in os.walk(path):
for filename in files:
yield os.path.join(home, filename)
for fullname in iterbrowse(DATA_1):
NAME = fullname
NAME = NAME.replace("\\", "/") # 替换
这个用于检测是否是已经被加密过的文件,是的话则执行解密,不是的话则执行加密
if NAME.split(".")[-1][-10:] == 'DATAAES-AI': # 检测是否是已经加密后的文件,用于检测后缀的DATAAES-AI
#解密
F = NAME.split(os.path.sep)[0].replace("DATAAES-AI", "") #去除DATAAES-AI
print(f'[-.·J·.-]: ',NAME, '\t\t- - - - 解密成功!!!')
else:
#加密
F = NAME.split(os.path.sep)[0]+"DATAAES-AI"
print(f'[+·J·+]: ', NAME, '\t\t+ + + + 加密成功!!!')
插入一段检测文件大小,可以进行加密大文件和小文件
def get_FileSize(filePath):
fsize = os.path.getsize(filePath)
fsize = fsize / float(1024 * 1024)
size = "%.0f" % fsize
其实原本我又做了一个是双重密码组合的加解密程序,只是没有在写文章,因为太过简单,没必要,只不过是在原基础上增加了一个密钥,就是再次将MD5值扩展了一个层级。
然后今天做的这个很好用啊,我给你们演示一下
运行程序后将要加密的文件夹路径输入进去,这里因为要批量进行加解密,怕文件过大加载会太慢,所有加入了内存检测,我这里输入5MB,意思就是只加密5MB内的程序,超过的不进行操作,然后输入密码,密码支持:中文、英文、数字、字符串,随便输一下,然后点回车
可以看到已经开始加密了,但是要记住,这是加密不是解密,遇到文件内存大的,需要一点时间,不会太慢,还有,在程序加密或解密的时候尽量不要去停止,因为会丢失数据。
如果你们很介意速度慢,可以自行将内存填小,这样速度就快了
加密完成了
我们来进行解密一下,由于我截屏太快,有两个文件没有反应过来
可以看到都进行解密完成了
废话不多说,完整代码:
import os
import hashlib
import base64
import time
def mine():
print("-------------------------------------批量加密工具-------------------------------------")
print("关注博主不迷路!!!\nhttps://jiangongfang.blog.csdn.net/\nhttps://blog.51cto.com/u_15449377")
print("使用告知:\n【加密后的文件后缀会多出DATAAES-AI,是为了方便软件检测,请勿乱改加密后的后缀名】")
print("【要加密或解密的文件命名不可有“./\”字符,否则会出错】")
print("【此程序的密码可以使用中文、英文、字符串、数字进行加密,可使用中文和中文字符串】")
print("【重点要注意::程序一旦开始加密或解密,中途不可退出,否则会丢失数据,直到运行完毕方可退出】")
print("-------------------------------------批量加密工具-------------------------------------\n")
DATA_1 = input('请输入要加密或解密的文件路径(不含文件):')
if DATA_1 == '':
print('程序不得为空,请重新输入!!!')
time.sleep(2)
os.system('cls')
mine()
else:
pass
DATA_1 = DATA_1.replace("\\", "/") # 替换
if os.path.isdir(DATA_1) == True:
pass
else:
print('路径错误或文件夹不存在,请重新输入!!!')
time.sleep(2)
os.system('cls')
mine()
str = input('请输入最高可加密的内存MB:')
# 判断是否填写
if int(str) == '':
print('错误,请重新输入!!!')
time.sleep(2)
os.system('cls')
mine()
else:
pass
PassWord_1 = input('请输入要加密或解密的密码(密码):')
# 判断是否填写
if PassWord_1 == '':
print('密码不得为空,请重新输入!!!')
time.sleep(2)
os.system('cls')
mine()
else:
pass
def iterbrowse(path):
for home, dirs, files in os.walk(path):
for filename in files:
yield os.path.join(home, filename)
for fullname in iterbrowse(DATA_1):
NAME = fullname
NAME = NAME.replace("\\", "/") # 替换
def get_FileSize(filePath):
fsize = os.path.getsize(filePath)
fsize = fsize / float(1024 * 1024)
size = "%.0f" % fsize
if int(size) >= int(str):
print('[-!-]: ',NAME, '\t- - - - 内存过大!!!')
pass
else:
#写入的文件
if NAME.split(".")[-1][-10:] == 'DATAAES-AI': # 检测是否是已经加密后的文件,用于检测后缀的DATAAES-AI
#解密
F = NAME.split(os.path.sep)[0].replace("DATAAES-AI", "") #去除DATAAES-AI
print(f'[-.·J·.-]: ',NAME, '\t- - - - 解密成功!!!')
else:
#加密
F = NAME.split(os.path.sep)[0]+"DATAAES-AI"
print(f'[+·J·+]: ', NAME, '\t+ + + + 加密成功!!!')
a = open(NAME, "rb") #读取文件
b = open(F, "wb") #写入文件
#使用MD5进行加密(双层加密)
hl = hashlib.md5()
hl.update(PassWord_1.encode(encoding='utf-8'))
password_list = hl.hexdigest()
#使用MD5进行加密(双层加密)
hl.update(password_list.encode(encoding='utf-8'))
password_list2 = hl.hexdigest()
password_data = password_list+password_list2
#加密
def Encryption_and_decryption():
count = 0 #索引
for now in a:
for nowByte in now:
newByte = nowByte ^ ord(password_data[count % len(password_data)]) #循环遍历出密码的ord值,单个循环
count += 1
b.write(bytes([newByte])) #转换
Encryption_and_decryption()
a.close()
b.close()
os.remove(f'{NAME}')
get_FileSize(NAME)
print('操作完成!!!')
print('正在返回!!!')
time.sleep(2)
os.system('cls')
mine()
mine()
更多推荐
所有评论(0)