Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. alphabet_dict = {
  2.  
  3. 'A':0,'B':1,'C':2, 'D':3, 'E':4,
  4. 'F':5, 'G':6, 'H':7, 'I':8 , 'J':9,
  5. 'K':10,'L':11, 'M':12 ,'N':13, 'O':14,
  6. 'P':15, 'Q':16, 'R':17, 'S':18, 'T':19,
  7. 'U':20, 'V':21 ,'W':22, 'X':23, 'Y':24 ,
  8. 'Z':25
  9. }
  10.  
  11.  
  12. alphabet_list = ['A','B','C','D','E','F','G',
  13. 'H','I','J','K','L','M','N','O','P',
  14. 'Q','R','S','T','U','V','W','X','Z' ]
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21. def encrypt(plaintext,key):
  22.  
  23. for i in range(0,len(plaintext),2):
  24. matrix = [ [ alphabet_dict[plaintext[i]] ] , [ alphabet_dict[plaintext[i+1]] ] ]
  25. product = [ [0] for z in range(2) ]
  26. for j in range(2):
  27. for k in range(1):
  28. product[j][k]=0
  29. for l in range(2):
  30. product[j][k] += key[j][l] * matrix[l][k]
  31. product[j][k] = product[j][k]%26
  32.  
  33. letter1 = chr( ord('A')+product[0][0])
  34. letter2 = chr(ord('A') + product[1][0])
  35.  
  36. print(letter1,end =" ")
  37. print(letter2,end =" ")
  38.  
  39.  
  40.  
  41. def determinant(key):
  42. d = ( key[0][0] * key[1][1] ) - (key[1][0] * key[0][1])
  43.  
  44. inverse =-1
  45. for i in range(26):
  46. if ( ( (d*i) %26 ) ==1 ):
  47. inverse =i
  48.  
  49. return inverse
  50.  
  51.  
  52. def inverse_key(key):
  53. inverse = determinant(key)
  54. if(inverse==-1):
  55. exit(0)
  56.  
  57. temp = key[0][0]
  58. key[0][0] = inverse * key[1][1]
  59. key[1][1] = inverse*temp
  60.  
  61. key[0][1] = inverse * -key[0][1]
  62. key[1][0] = inverse * -key[1][0]
  63. return key
  64.  
  65.  
  66.  
  67.  
  68. def decrypt(ciphertext,key):
  69. key = inverse_key(key)
  70. encrypt(ciphertext,key)
  71.  
  72.  
  73.  
  74. print("Enter the 2*2 key [0-25]")
  75. key = list()
  76. for i in range(2):
  77. row = []
  78. for j in range(2):
  79. print("Enter element K" + str(i) + str(j) )
  80. x = int(input())
  81. row.append(x)
  82. key.append(row)
  83.  
  84.  
  85.  
  86. print("Enter the plain text\n")
  87. plaintext = input()
  88.  
  89. if(len(plaintext)%2!=0):
  90. plaintext += "X"
  91.  
  92. decrypt(plaintext,key)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement