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日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改