Caesar Cipher in Cryptography
Caesar Cipher in Cryptography
To decrypt the message, you simply need to shift each letter back
by the same number of positions. In this case, you would shift
each letter in “KHOOR” back by 3 positions to get the original
message, “HELLO”.
En(x)=(x+n)mod 26 En(x)=(x+n)mod 26
(Encryption Phase with shift n)
Dn(x)=(x−n)mod 26 Dn(x)=(x−n)mod 26
(Decryption Phase with shift n)
Examples :
Text : ABCDEFGHIJKLMNOPQRSTUVWXYZ
Shift: 23
Cipher: XYZABCDEFGHIJKLMNOPQRSTUVW
Text : ATTACKATONCE
Shift: 4
Cipher: EXXEGOEXSRGI
Advantages
Easy to implement and use thus, making suitable for beginners to
learn about encryption.
Can be physically implemented, such as with a set of rotating
disks or a set of cards, known as a scytale, which can be useful in
certain situations.
Requires only a small set of pre-shared information.
Can be modified easily to create a more secure variant, such as
by using a multiple shift values or keywords.
Disadvantages
It is not secure against modern decryption methods.
Vulnerable to known-plaintext attacks, where an attacker has
access to both the encrypted and unencrypted versions of the
same messages.
The small number of possible keys means that an attacker can
easily try all possible keys until the correct one is found, making it
vulnerable to a brute force attack.
It is not suitable for long text encryption as it would be easy to
crack.
It is not suitable for secure communication as it is easily broken.
Does not provide confidentiality, integrity, and authenticity in a
message.
Features of Caesar Cipher
1. Substitution cipher: The Caesar cipher is a type of substitution
cipher, where each letter in the plaintext is replaced by a letter
some fixed number of positions down the alphabet.
2. Fixed key: The Caesar cipher uses a fixed key, which is the
number of positions by which the letters are shifted. This key is
known to both the sender and the receiver.
3. Symmetric encryption: The Caesar cipher is a symmetric
encryption technique, meaning that the same key is used for both
encryption and decryption.
4. Limited keyspace: The Caesar cipher has a very limited
keyspace of only 26 possible keys, as there are only 26 letters in
the English alphabet.
5. Vulnerable to brute force attacks: The Caesar cipher is
vulnerable to brute force attacks, as there are only 26 possible
keys to try.
6. Easy to implement: The Caesar cipher is very easy to
implement and requires only simple arithmetic operations,
making it a popular choice for simple encryption tasks.
Rules for the Caesar Cipher
1. Choose a number between 1 and 25. This will be your “shift”
value.
2. Write down the letters of the alphabet in order, from A to Z.
3. Shift each letter of the alphabet by the “shift” value. For example,
if the shift value is 3, A would become D, B would become E, C
would become F, and so on.
4. Encrypt your message by replacing each letter with the
corresponding shifted letter. For example, if the shift value is 3,
the word “hello” would become “khoor”.
5. To decrypt the message, simply reverse the process by shifting
each letter back by the same amount. For example, if the shift
value is 3, the encrypted message “khoor” would become “hello”.
Algorithm for Caesar Cipher
Input:
1. Choose a shift value between 1 and 25.
2. Write down the alphabet in order from A to Z.
3. Create a new alphabet by shifting each letter of the original
alphabet by the shift value. For example, if the shift value is 3,
the new alphabet would be:
4. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
DEFGHIJKLMNOPQRSTUVWXYZABC
5. Replace each letter of the message with the corresponding letter
from the new alphabet. For example, if the shift value is 3, the
word “hello” would become “khoor”.
6. To decrypt the message, shift each letter back by the same
amount. For example, if the shift value is 3, the encrypted
message “khoor” would become “hello”.
Procedure:
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.
// 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);
Output
Text : ATTACKATONCE
Shift: 4
Cipher: EXXEGOEXSRGI
Paython:
# 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)
return result
Output
Text : ATTACKATONCE
Shift: 4
Cipher: EXXEGOEXSRGI
The Caesar Cipher, used by Julius Caesar around 58 BC, is a method that
scrambles a message by shifting its letters. For example, shifting ‘A’ by three
positions makes it ‘D’. To read the message, the receiver reverses this shift.
Later, an Arab mathematician cracked the Caesar Cipher by analyzing how
often each letter appears, which helped him figure out the pattern and
decode the message.
In the Caesar cipher, the key is a letter that shows how many places to shift
each letter in the message. For example, a key D means “shift 3 places,” and
a key M means “shift 12 places.” A key A means “do not shift,” and a key Z
means either “shift 25 places” or “shift one place backwards.”
Hill Cipher
Last Updated : 21 Jul, 2021
Encryption
We have to encrypt the message ‘ACT’ (n=3).The key is
‘GYBNQKURP’ which can be written as the nxn matrix:
Decryption
To decrypt the message, we turn the ciphertext back into a vector,
then simply multiply by the inverse matrix of the key matrix
(IFKVIVVMI in letters).The inverse of the matrix used in the previous
example is:
For the previous Ciphertext ‘POH’:
Hill Cipher
Last Updated : 21 Jul, 2021
def getKeyMatrix(key):
k =0
for i in range(3):
for j in range(3):
keyMatrix[i][j] = ord(key[k]) % 65
k += 1
def encrypt(messageVector):
for i in range(3):
for j in range(1):
cipherMatrix[i][j] = 0
for x in range(3):
cipherMatrix[i][j] += (keyMatrix[i][x] *
messageVector[x][j])
cipherMatrix[i][j] = cipherMatrix[i][j] % 26
getKeyMatrix(key)
for i in range(3):
messageVector[i][0] = ord(message[i]) % 65
encrypt(messageVector)
CipherText = []
for i in range(3):
CipherText.append(chr(cipherMatrix[i][0] + 65))
# Finally print the ciphertext
# Driver Code
def main():
# be encrypted
message = "ACT"
key = "GYBNQKURP"
HillCipher(message, key)
if __name__ == "__main__":
main()
Output:
Ciphertext: POH