python实现加密器,python编写加密程序
大家好,本篇文章主要讲的是用计算机编程语言制作一个文件加密器,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
目录
前言下载地址效果预览加密算法总结
前言
因为一些懂得都懂的原因,我的父母对于我电脑上的文件内容特别感兴趣。为了防止信息泄露,我连夜用计算机编程语言做了一个文件加密器,防止我的重要信息被泄露。
下载地址
github:https://github。文件密码
开源代码库上的资源是计算机编程语言源代码
效果预览
为了方便操作,我用PyQt做了窗口。运行起来是这样的。
加密效果还是很不错了
加密算法
对于我来说,程序中图形用户界面的编写算比较简单。困难的是加密算法的编写。
先把密码的代码贴出来,在详细讲解。
类别密码:
key=
def __init__(self,key):
self.key=key
def setKey(self,key):
self.key=key
def getKey(self):
返回自我钥匙
def parseKey(self,key):
# 处理密钥
如果键!=:
o=0
对于键:中的k
n=0
i=str(ord(k))
对于i:中的t
n=int(t)
o=n
# 使密钥范围控制在10-100之间
而True:
如果o 10:
o=int(o * 2)
elif o 100:
o=int(o/2)
else:
返回o
返回
def getOdd(self,max):
如果i % 2==1,则返回[i为I在范围(1、最大值为1]
定义加密(自身,数据):
# 加密算法
if data==:
返回
结果=
长度=len(数据)#获取数据长度
a=[order(x)for x in data]
# 判断是否为四的倍数
余数=长度% 4 #余数
如果余数!=0:
b=4 -余数
对于范围:中的c
a.append(0)
# 第一次分组
组=[]
d=len(a) //2
e1=a[:d]
e2=a[d:]
indexs=self.getOdd(d)
团体。追加([索引中我的e1[i - 1])
团体。追加([索引中I的E1[I])
团体。追加([索引中我的e2[i - 1])
团体。追加(索引中I的[E2[I])
# 第二次分组
f1=组[0]组[3]
f2=组[1]组[2]
# 第一次加密
键码1=自身。解析密钥(自身。getkey())
g=[]
对于f1:中的h
i=h键码一
j=chr(i)
g。追加(一)
结果=j
# 第二次获取键码
k=str(sum(g))
keycode2=self.parseKey(k)
# 第二次加密
对于f2:中的l
m=l键码2
n=chr(m)
结果=n
# 加密完成
回送结果
定义解密(自身,数据):
# 解密算法
if data==:
返回
结果=
# 获取键码一
键码1=自身。解析密钥(自身。getkey())
# 第一次解密
a=len(data) //2
b1=数据[:a]
b2=数据[a:]
c=[B1中d的订单(d)]
e=[c语言中f的f键码1]
# 获取键码2
g=str(sum(c))
keycode2=self.parseKey(g)
# 第二次解密
h=[B2 I订单(I)]
j=[h中k的k键码2]
# f1对应e,f2对应j
# 第一次分组
k=len(e) //2
group1=e[:k]
group4=e[k:]
group2=j[:k]
group3=j[k:]
# 第二次分组
datalength=len(组1)len(组2)len(组3)len(组4)#数据长度
l=数据长度//4
m=[]
对于范围:内的n
m.append(group1[n])
m.append(group2[n])
o=[]
对于范围(l):内的p
o.append(group3[p])
o.append(group4[p])
#数据拼接
q=m o
对于q:中的r
结果=chr(r)
#返回结果
回送结果
大致过程如下
我随便画的,大概就是这个过程。我不在乎有没有错误。
首先,对密钥进行处理,将密钥转换为ASCII,并将所有数字相加得到总和。通过乘法和除法将键的范围控制在10到100之间。
重新处理数据,说数据分4组,不足位数用00填。分组后进行交叉分组。得到第二次分组的结果。使用密钥处理结果1以获得数据1。然后,对第一结果的总和进行密钥处理以获得第二密钥。
然后,通过使用第二密钥处理第二结果以获得第二数据。
数据一和数据二被拼接以获得加密数据。
解密是相反的操作。
总结
这就是这篇关于用Python制作文件加密器的文章。关于Python文件加密的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。