Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- alphabet_dict = {
- 'A':0,'B':1,'C':2, 'D':3, 'E':4,
- 'F':5, 'G':6, 'H':7, 'I':8 , 'J':9,
- 'K':10,'L':11, 'M':12 ,'N':13, 'O':14,
- 'P':15, 'Q':16, 'R':17, 'S':18, 'T':19,
- 'U':20, 'V':21 ,'W':22, 'X':23, 'Y':24 ,
- 'Z':25
- }
- alphabet_list = ['A','B','C','D','E','F','G',
- 'H','I','J','K','L','M','N','O','P',
- 'Q','R','S','T','U','V','W','X','Z' ]
- def encrypt(plaintext,key):
- for i in range(0,len(plaintext),2):
- matrix = [ [ alphabet_dict[plaintext[i]] ] , [ alphabet_dict[plaintext[i+1]] ] ]
- product = [ [0] for z in range(2) ]
- for j in range(2):
- for k in range(1):
- product[j][k]=0
- for l in range(2):
- product[j][k] += key[j][l] * matrix[l][k]
- product[j][k] = product[j][k]%26
- letter1 = chr( ord('A')+product[0][0])
- letter2 = chr(ord('A') + product[1][0])
- print(letter1,end =" ")
- print(letter2,end =" ")
- def determinant(key):
- d = ( key[0][0] * key[1][1] ) - (key[1][0] * key[0][1])
- inverse =-1
- for i in range(26):
- if ( ( (d*i) %26 ) ==1 ):
- inverse =i
- return inverse
- def inverse_key(key):
- inverse = determinant(key)
- if(inverse==-1):
- exit(0)
- temp = key[0][0]
- key[0][0] = inverse * key[1][1]
- key[1][1] = inverse*temp
- key[0][1] = inverse * -key[0][1]
- key[1][0] = inverse * -key[1][0]
- return key
- def decrypt(ciphertext,key):
- key = inverse_key(key)
- encrypt(ciphertext,key)
- print("Enter the 2*2 key [0-25]")
- key = list()
- for i in range(2):
- row = []
- for j in range(2):
- print("Enter element K" + str(i) + str(j) )
- x = int(input())
- row.append(x)
- key.append(row)
- print("Enter the plain text\n")
- plaintext = input()
- if(len(plaintext)%2!=0):
- plaintext += "X"
- decrypt(plaintext,key)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement