Caesar Cipher

The Caesar Cipher technique is one of the earliest and simplest method of encryption technique. It’s simply a type of substitution cipher, i.e., each letter of a given text is replaced by a letter some fixed number of positions down the alphabet. For example with a shift of 1, A would be replaced by B, B would become C, and so on. The method is apparently named after Julius Caesar, who apparently used it to communicate with his officials.
Thus to cipher a given text we need an integer value, known as shift which indicates the number of position each letter of the text has been moved down.
The encryption can be represented using modular arithmetic by first transforming the letters into numbers, according to the scheme, A = 0, B = 1,…, Z = 25. Encryption of a letter by a shift n can be described mathematically as.

E_n(x)=(x+n)mod 26
(Encryption Phase with shift n)

D_n(x)=(x-n)mod 26
(Decryption Phase with shift n)

Caesar Cipher 3

Examples :

Shift: 23

Shift: 4

Algorithm for Caesar Cipher:

  1. A String of lower case letters, called Text.
  2. An Integer between 0-25 denoting the required shift.


  • Traverse the given text one character at a time .
  • For each character, transform the given character as per the rule, depending on whether we’re encrypting or decrypting the text.
  • Return the new string generated.

Program that receives a Text (string) and Shift value( integer) and returns the encrypted text.


// A C++ program to illustrate Caesar Cipher Technique
#include <iostream>
using namespace std;
// This function receives text and shift and
// returns the encrypted text
string encrypt(string text, int s)
    string result = "";
    // traverse text
    for (int i=0;i<text.length();i++)
        // apply transformation to each character
        // Encrypt Uppercase letters
        if (isupper(text[i]))
            result += char(int(text[i]+s-65)%26 +65);
    // Encrypt Lowercase letters
        result += char(int(text[i]+s-97)%26 +97);
    // Return the resulting string
    return result;
// Driver program to test the above function
int main()
    string text="ATTACKATONCE";
    int s = 4;
    cout << "Text : " << text;
    cout << " Shift: " << s;
    cout << " Cipher: " << encrypt(text, s);
    return 0;


//A Java Program to illustrate Caesar Cipher Technique
class CaesarCipher
    // Encrypts text using a shift od s
    public static StringBuffer encrypt(String text, int s)
        StringBuffer result= new StringBuffer();
        for (int i=0; i<text.length(); i++)
            if (Character.isUpperCase(text.charAt(i)))
                char ch = (char)(((int)text.charAt(i) +
                                  s - 65) % 26 + 65);
                char ch = (char)(((int)text.charAt(i) +
                                  s - 97) % 26 + 97);
        return result;
    // Driver code
    public static void main(String[] args)
        String text = "ATTACKATONCE";
        int s = 4;
        System.out.println("Text  : " + text);
        System.out.println("Shift : " + s);
        System.out.println("Cipher: " + encrypt(text, s));


#A python program to illustrate Caesar Cipher Technique
def encrypt(text,s):
    result = ""
    # traverse text
    for i in range(len(text)):
        char = text[i]
        # Encrypt uppercase characters
        if (char.isupper()):
            result += chr((ord(char) + s-65) % 26 + 65)
        # Encrypt lowercase characters
            result += chr((ord(char) + s - 97) % 26 + 97)
    return result
#check the above function
s = 4
print "Text  : " + text
print "Shift : " + str(s)
print "Cipher: " + encrypt(text,s)



Shift: 4

How to decrypt?
We can either write another function decrypt similar to encrypt, that’ll apply the given shift in the opposite direction to decrypt the original text. However we can use the cyclic property of the cipher under modulo , hence we can simply observe

Cipher(n) = De-cipher(26-n)

Hence, we can use the same function to decrypt, instead we’ll modify the shift value such that shift = 26-shift (Refer this for a sample run in C++).

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

This article is attributed to GeeksforGeeks.org

leave a comment



load comments

Subscribe to Our Newsletter