Ghost689 2022-10-18 15:15 采纳率: 92.6%
浏览 78
已结题

信息安全,Cryptography密码学,使用有秘钥的playfair cipher解密密文

信息安全,Cryptography密码学,使用playfair cipher解密密文,秘钥”playfair example ”,明文是什么,具体情况如下图

img

  • 写回答

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")
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月26日
  • 已采纳回答 10月18日
  • 创建了问题 10月18日

悬赏问题

  • ¥15 如何使用simulink建立一个永磁同步直线电机模型?
  • ¥30 天体光谱图的的绘制并得到星表
  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗