python换位密码,python重置密码

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: