软件加密方法 python编写加密程序


软件加密方法 python编写加密程序


使用python做一个加密资料的软件 , 可加密应用程序、文件、压缩包等多种文件格式 , 不可直接加密文件夹 , 可以先用压缩包打包在加密 。加密后的文件后缀不可乱改 , 否则解密会失败 。程序内没有加入加密和解密成功的提示信息 。
加密使用的是双层MD5加密
首先导入库
私信小编01即可获取大量python学习资源
import osimport hashlib读取文件与写入文件
a = open(name_1, "rb")#读取文件b = open(data, "wb")#写入文件a.close()#保存退出b.close()#保存退出使用ord进行编码,用bytes进行解码 , 内置索引进行循环读取密码 , 挨个读取进行编码写入 ,
#加密及解密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= 1b.write(bytes([newByte]))#转换Encryption_and_decryption()用ord进行编码可以看到会出现一点问题 , 就是加密后的文件 , 如文本文件 , 如果加密的密码是‘qwer’ , 编码则会将q w e r分别用bytes编码为 113 119 101 114 , 然后把编码后的数字在循环内一个一个插入到文本内 , 进行代替 , 解密也是同样的原理 , 但是有一个致命缺陷 , 就是假如你的密码是”qwer“ , 解码的时候输入一个密码 q 即可全部解码成功 , 这个是一个缺陷 。
所以我使用MD5进行加密 , 然后再进行编码 , MD5大家都知道 , 不同的MD5值是由不同的字母、数字、字符串组合进行转换而成 , MD5也区分大小写 , 这也让我们的加密软件更安全一步
【软件加密方法 python编写加密程序】hl = hashlib.md5()hl.update(password.encode(encoding='utf-8'))password_list = hl.hexdigest()为了我们的资料 , 我将MD5进行了二次加密 , 用已经加密后的MD5值再次进行加密 , 然后将第一个MD5值和第二个MD5值进行组合(非相加) , 组成高强度的加密
#使用MD5进行加密(双层加密)hl = hashlib.md5()hl.update(password.encode(encoding='utf-8'))password_list = hl.hexdigest() hl.update(password_list.encode(encoding='utf-8'))password_list2 = hl.hexdigest()password_data = https://www.shwenmu.com/wenda/password_list password_list2解码也是同样原理 , 将密码进行MD5加密再加密 , 然后进入文件进行编码转换 , 如果密码正确则文件不会有乱码 , 如果密码错误则文件内都是乱码 , 这个程序是没有解码和加密成功的提示 。
由于路径多种多样 , 程序会因此运行错误 , 所以我用replace进行路径’\ /‘转换 , 把所有的’\\‘和’\‘转换为’/‘,用于程序方便读取
name_1 = name_1.replace("\\", "/")# 替换data = https://www.shwenmu.com/wenda/data.replace("\\", "/")# 替换为了方便大家进行使用 , 提取进行程序的检测 , 检测是否存在该文件 , 或路径的错误
if os.path.exists(name_1) == True:passelse:print('请检查是否路径错误或不存在该文件!!!!')os.system('pause')exit()保存的路径不可缺少 , 如果保存的路径没有输入直接跳过则会默认为读取程序的位置 , 如果读取程序的路径也没有写入 , 则会以读取程序的根目录为存储地进行保存
if name_1.split(".")[1][-4:] == 'DATA':F = name_1.split(".")[1].replace("DATA", "")if os.path.split(data)[0] == '':if os.path.split(name_1)[0] == '':data = https://www.shwenmu.com/wenda/os.path.split(name_1)[-1].split(".")[0]'.'Felse:data = https://www.shwenmu.com/wenda/os.path.split(name_1)[0]'/'os.path.split(name_1)[-1].split(".")[0]'.'Felse:https://www.shwenmu.com/wenda/https://www.shwenmu.com/wenda/https://www.shwenmu.com/wenda/https://www.shwenmu.com/wenda/data = data'/'os.path.split(name_1)[-1].split(".")[0]'.'Felse:# 保存路径if os.path.split(data)[0] == '':if os.path.split(name_1)[0] == '':data = https://www.shwenmu.com/wenda/name_1.split(".")[1]# 后缀data = https://www.shwenmu.com/wenda/os.path.split(name_1)[-1].split(".")[0]'.'data'DATA'else:data = https://www.shwenmu.com/wenda/name_1.split(".")[1]# 后缀data = https://www.shwenmu.com/wenda/os.path.split(name_1)[0]'/'os.path.split(name_1)[-1].split(".")[0]'.'data'DATA'else:name_3 = name_1.split(".")[1]# 后缀https://www.shwenmu.com/wenda/https://www.shwenmu.com/wenda/https://www.shwenmu.com/wenda/https://www.shwenmu.com/wenda/data = data'/'os.path.split(name_1)[-1].split(".")[0]'.'name_3'DATA'

推荐阅读