信息安全,Cryptography密码学,使用playfair cipher解密密文,秘钥”playfair example ”,明文是什么,具体情况如下图
信息安全,Cryptography密码学,使用有秘钥的playfair cipher解密密文
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 游一游走一走 2022-10-18 15:52关注
HI DE TH EG OL DI NT HE TR EX ES TU MP
key=input("Enter key") key=key.replace(" ", "") key=key.upper() def matrix(x,y,initial): return [[initial for i in range(x)] for j in range(y)] result=list() for c in key: #storing key if c not in result: if c=='J': result.append('I') else: result.append(c) flag=0 for i in range(65,91): #storing other character if chr(i) not in result: if i==73 and chr(74) not in result: result.append("I") flag=1 elif flag==0 and i==73 or i==74: pass else: result.append(chr(i)) k=0 my_matrix=matrix(5,5,0) #initialize matrix for i in range(0,5): #making matrix for j in range(0,5): my_matrix[i][j]=result[k] k+=1 def locindex(c): #get location of each character loc=list() if c=='J': c='I' for i ,j in enumerate(my_matrix): for k,l in enumerate(j): if c==l: loc.append(i) loc.append(k) return loc def encrypt(): #Encryption msg=str(input("ENTER MSG:")) msg=msg.upper() msg=msg.replace(" ", "") i=0 for s in range(0,len(msg)+1,2): if s<len(msg)-1: if msg[s]==msg[s+1]: msg=msg[:s+1]+'X'+msg[s+1:] if len(msg)%2!=0: msg=msg[:]+'X' print("CIPHER TEXT:",end=' ') while i<len(msg): loc=list() loc=locindex(msg[i]) loc1=list() loc1=locindex(msg[i+1]) if loc[1]==loc1[1]: print("{}{}".format(my_matrix[(loc[0]+1)%5][loc[1]],my_matrix[(loc1[0]+1)%5][loc1[1]]),end=' ') elif loc[0]==loc1[0]: print("{}{}".format(my_matrix[loc[0]][(loc[1]+1)%5],my_matrix[loc1[0]][(loc1[1]+1)%5]),end=' ') else: print("{}{}".format(my_matrix[loc[0]][loc1[1]],my_matrix[loc1[0]][loc[1]]),end=' ') i=i+2 def decrypt(): #decryption msg=str(input("ENTER CIPHER TEXT:")) msg=msg.upper() msg=msg.replace(" ", "") print("PLAIN TEXT:",end=' ') i=0 while i<len(msg): loc=list() loc=locindex(msg[i]) loc1=list() loc1=locindex(msg[i+1]) if loc[1]==loc1[1]: print("{}{}".format(my_matrix[(loc[0]-1)%5][loc[1]],my_matrix[(loc1[0]-1)%5][loc1[1]]),end=' ') elif loc[0]==loc1[0]: print("{}{}".format(my_matrix[loc[0]][(loc[1]-1)%5],my_matrix[loc1[0]][(loc1[1]-1)%5]),end=' ') else: print("{}{}".format(my_matrix[loc[0]][loc1[1]],my_matrix[loc1[0]][loc[1]]),end=' ') i=i+2 while(1): choice=int(input("\n 1.Encryption \n 2.Decryption: \n 3.EXIT")) if choice==1: encrypt() elif choice==2: decrypt() elif choice==3: exit() else: print("Choose correct choice")
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何使用simulink建立一个永磁同步直线电机模型?
- ¥30 天体光谱图的的绘制并得到星表
- ¥15 PointNet++的onnx模型只能使用一次
- ¥20 西南科技大学数字信号处理
- ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
- ¥30 STM32 INMP441无法读取数据
- ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
- ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
- ¥15 用visualstudio2022创建vue项目后无法启动
- ¥15 x趋于0时tanx-sinx极限可以拆开算吗