Question: In python create a program that will encrypt and decrypt using an affine cipher using the formula e(m) k1 * m + k2 (mod p),

In python create a program that will encrypt and decrypt using an affine cipher using the formula e(m) k1 * m + k2 (mod p), d(c) k'1 * (c-k2) (mod p). The program must need to be able to encrypt or decrypt numbers or letters using k1,k2, mod p, m for plaintext and c for cipher text. Example: k= (34,71) p = 541 m = 204 or c = 431. The program must allow the user to enter the plaintext or cipher text and output either the encrypted or decrypted text.

def encrypt(plaintext, a, b):

ciphertext = ""

for char in plaintext:

if char.isalpha():

shift = ord(char.upper())-65

ciphertext += chr(((a*shift + b) % 26) + 65)

else:

ciphertext += char

return ciphertext

def decrypt(ciphertext, a, b):

plaintext = ""

a_inv = 0

for i in range(26):

if (a * i) % 26 == 1:

a_inv = i

for char in ciphertext:

if char.isalpha():

shift = ord(char.upper())-65

plaintext += chr(((a_inv * (shift - b)) % 26) + 65)

else:

plaintext += char

return plaintext

def main():

while True:

print("1. Encrypt")

print("2. Decrypt")

print("3. Quit")

choice = int(input("Enter your choice: "))

if choice == 1:

plaintext = input("Enter plaintext: ")

a = int(input("Enter a: "))

b = int(input("Enter b: "))

print("Ciphertext: " + encrypt(plaintext, a, b))

elif choice == 2:

ciphertext = input("Enter ciphertext: ")

a = int(input("Enter a: "))

b = int(input("Enter b: "))

print("Plaintext: " + decrypt(ciphertext, a, b))

elif choice == 3:

break

else:

print("Invalid option selected.")

if __name__ == "__main__":

main()

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!