Search code examples
pythonencryptioncaesar-cipher

How to write a Ceaser Cipher Python


I am not sure how to start writing the program.

input = input("Input the text you would like encrypted")


def cipher_text(letter_code):
    for i in input:
        number_code = ord(i) + 3
        letter_code = chr(number_code)
        print(letter_code)

def plain_text(letter_code,regular_text):
    for i in input:
        regular_text = letter_code - 3
        print(regular_text)
print("Encrypted text")
cipher_text()
print("Unencrypted text")
plain_text()

Sorry for the question I am not sure how to begin. Also please give advice not the answer.


Solution

  • Mathematically, if we see encryption technique in Caesar cipher, then the formula to get encrypted letter is:

    c = (x+n) mod 26, 
    

    where c is place value of encrypted letter, x is place value of actual letter and n is the shift. Similarly, to decrypt each letter, we use the formula given below:

    c = (x-n) mod 26
    

    You can use my below code to get an idea of how to implement Caesar Cipher:

    def encrypt(plain_text, s):
        encrypted_text = ''
        for i in range(len(plain_text)):
            if plain_text[i] == ' ':
                encrypted_text = encrypted_text + plain_text[i]
            elif plain_text[i].isupper():
                encrypted_text = encrypted_text + chr((ord(plain_text[i])+s-65)%26+65)
            else:
                encrypted_text = encrypted_text + chr((ord(plain_text[i])+s-97)%26+97)
        return encrypted_text
    
    
    def decrypt(encrypt_text, s):
        decrypted_text = ''
        for i in range(len(encrypt_text)):
            if encrypt_text[i] == ' ':
                decrypted_text = decrypted_text + encrypt_text[i]
            elif encrypt_text[i].isupper():
                decrypted_text = decrypted_text + chr((ord(encrypt_text[i])-s-65)%26+65)
            else:
                decrypted_text = decrypted_text + chr((ord(encrypt_text[i])-s-97)%26+97)
        return decrypted_text
    
    
    
    plain_text = input("Input the text you would like encrypted:")
    s = int(input("Enter shift:"))
    encrypt_text = encrypt(plain_text, s)
    print("Encrypted text: {}".format(encrypt_text))
    print("Decrypted text: {}".format(decrypt(encrypt_text, s)))
    

    Sample Output:

    Input the text you would like encrypted:Taj Mahal
    
    Enter shift:3
    Encrypted text: Wdm Pdkdo
    Decrypted text: Taj Mahal