# Caesar Cipher Program in C

## What is Caesar Cipher?

The Caesar Cipher is a type of substitution cipher that is named after Julius Caesar, who is said to have used it to encrypt messages sent to his officials. The Caesar Cipher works by replacing each letter in a plaintext message with a different letter or symbol, based on a fixed number of positions (shift value) down the alphabet.

For example, if the shift value is 3, the letter "A" would be replaced with "D", "B" would be replaced with "E", and so on. The result is a ciphertext message that can only be deciphered by someone who knows the shift value.

The technique is easy to break but can be useful for very basic data encryption and for educational purposes. It was used to encrypt military and personal communications in ancient Rome. Nowadays, it is used for educational and recreational purposes, such as puzzle books and online games.

The Caesar Cipher is considered to be a very weak encryption method because it only has a small number of possible keys (typically 26, one for each letter of the alphabet), and can be easily broken by trying all possible keys. It is also vulnerable to frequency analysis which is a method of identifying the letters in a ciphertext by analyzing the frequency of the letters.

The Caesar Cipher is still widely used in educational and research contexts, but it is not recommended to use in any serious cryptographic application due to its lack of security. More secure algorithms such as RSA and AES are commonly used instead.

Here is an example of a C program that implements the Caesar Cipher.

Example:

``````#include <stdio.h>
#include <string.h>

void encrypt(char* text, int shift) {
int length = strlen(text);
for(int i = 0; i < length; i++) {
char c = text[i];
if(c >= 'a' && c <= 'z') {
c = c + shift;
if(c > 'z') {
c = c - 'z' + 'a' - 1;
}
text[i] = c;
} else if(c >= 'A' && c <= 'Z') {
c = c + shift;
if(c > 'Z') {
c = c - 'Z' + 'A' - 1;
}
text[i] = c;
}
}
}

int main() {
char text[100];
int shift;
printf("Enter a message to encrypt: ");
scanf("%s", text);
printf("Enter shift value: ");
scanf("%d", &shift);
encrypt(text, shift);
printf("Encrypted message: %s\n", text);
return 0;
}
``````

Output:

``````Enter a message to encrypt: Javatpoint
Enter shift value: 2
Encrypted message: Lcxcvrqkpv
``````

This program takes a string of text and an integer shift value as input and encrypts the text by shifting each letter by the shift value. The shift value can be positive or negative. Here, in the above example, we have used a shift value 2 which has shifted the encrypted code by 2 positions further as compared to original message.

Note: This program only considers lowercase and uppercase alphabets and doesn't handle any special characters or whitespaces.