python换位密码,python重置密码
本文主要为大家介绍python密码学周期性替换密码的学习。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
00-1010周期替换密码加密解密程序代码
目录
参考教材:《现代密码学教程》 P47 3.1.2
周期置换密码
周期排列密码是将明文P串按固定长度M分组,然后将每组中的子串按1,2,M以获得密文,其中密钥包含分组长度信息。
解密时,密文C也按长度M分组,每组子串按的逆置换-1重排,得到明文p。
以例3.3为例
类似于上次提到的列替换密码
加密解密过程
进口re
类别时间码:
__key=[] # key
__apaMsg= #明文
__secMsg= #密文
__lenKey=0 #密钥长度循环值
Getkey (self,s) : #密钥形成函数
Key={}
antiKey={}
S=re.split(r[()],s) #由()分隔
而“在s: #中消除”
s.remove( )
temp=[]
对于范围内的I(透镜):
对于范围内的j(len(s[I])-1):
key[int(s[I][j])]=int(s[I][j 1])# key字典
反密钥[int (s [I] [j 1])]=int (s [I] [j]) #反密钥字典
包含temp . append(int(s[I][j])# key
key[int(s[I][-1])]=int(s[I][0])#解决最后一个问题
anti key[int(s[I][0])]=int(s[I][-1])
temp.append(int(s[i][-1]))
Maxtemp=max(temp) #密钥长度
自我。__lenKey=maxtemp
lenKey={ I 1 for I in range(max temp)}
SameKey=lenKey-set(temp) #找到了未更改的密钥。
因为我在sameKey:
键[i]=i
反键
自我。__key.append(Key)
自我。__key.append(antiKey)
DEFECODE (self,p) : #加密函数
自我。__apaMsg=p
关键=自我。_ _键[0]
时间=自我。__lenKey
P=p.replace( , )#删除空格
if len(p)%time!=0:
P= *(time-len(p)%time) #结束时完成
n=len(p)//time
m=[p[I * time :(i1)* time]for I in range(n)]#数据包生成
m=[m[I][key[J1]-1]for I in range(n)for j in range(time)]#矩阵变换
M=“”。join(M) # list被转换成一个字符串。
自我。__secMsg=M
返回M
定义解码(自身,q):
自我。__apaMsg=p
m=自我。__lenKey
n=len(q)//m
关键=自我。_ _键[1]
m=[q[I * m :(I ^ 1)* m]for I in range(n)]
M=[M[I][Key[j 1]-1]for I in range(n)for j in range(M)]
M=“”。加入(M)
自我。__secMsg=M
返回M
自定义打印(自助):
打印(自我。__key,self。__apaMsg,self。__secMsg,self。__lenKey)
s=(15623)
网络与交换国家重点实验室
a=时间码()
a .获取密钥
q=a.enCode(p)
解码(q)
a.打印()
以上是python密码学周期排列密码学习的详细内容。更多关于python密码学周期排列密码的信息,请关注盛行IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。