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 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障
  • ¥15 opencv 无法读取视频
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))