# Encryption / Decryption

__Encryption/Decryption using Caesar Cipher :-__

**In cryptography, a Caesar cipher, also known as a Caesar's cipher, the shift cipher, Caesar's code or Caesar shift, is one of the simplest and most widely known encryption techniques. It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet. For example, with a shift of 3,**

`A`would be replaced by

`D`,

`B`would become

`E`, and so on. The method is named after Julius Caesar, who used it to communicate with his generals.

###
__METHOD OF
ENCRYPTION__-:

The transformation can be represented by aligning two
alphabets; the cipher alphabet is the plain alphabet rotated left or right by some
number of positions. For instance, here is a Caesar cipher using a left
rotation of three places (the shift parameter, here 3, is used as the key):

**Plain:**
ABCDEFGHIJKLMNOPQRSTUVWXYZ

**Cipher:** DEFGHIJKLMNOPQRSTUVWXYZABC

*-:*

__METHOD OF ENCRYPTION__
To encrypt a message, simply look up each letter of the message in the
"plain" line and write down the corresponding letter in the
"cipher" line. To decipher, do the reverse.

Plaintext:
the quick brown fox jumps over the lazy dog

Ciphertext: WKH TXLFN EURZQ IRA MXPSV RYHU WKH
ODCB GRJ

The encryption can also 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

*x*by a shift*n*can be described mathematically as,
Decryption is performed similarly,

The replacement remains the same throughout the message, so the cipher is
classed as a type of

*monoalphabetic substitution*, as opposed to*polyalphabetic substitution*.

###
**program:-**

**program:-**

#include <iostream.h>

#include <conio.h>

#include <ctype.h>

int SQR(int x)

{

int
yes=0, i=1;

while(i<=17
&& yes==0)

{

if(i*i==x)

{

yes=1;

sr=i;

}

else

i++;

}

return
yes;

}

void main()

{

clrscr();

int choice, n;

cout<<"CAESAR CIPHER \n";

cout<<"1. Code your text \n";

cout<<"2. Decode a cipher \n";

cin>>choice;

char A[300], W;

switch (choice)

{

case
1:

clrscr();

do

{

cout<<"Enter
the total number of letters in your message (perfect square) ";

cin>>n;

}
while(SQR(n)==0);

cout<<"Enter
your message : \n";

for(int
o=0; o<n; o++)

{

do

{

cin>>A[o];

}
while (isalnum(A[o])==0);

}

int
z=0;

clrscr();

for(int
y=1; y<=2*sr; y+=2)

{

for(int
q=1; q<=sr; q++)

{

gotoxy(y,
q);

cout<<(char)toupper(A[z]);

z++;

}

cout<<endl;

}

cout<<"\nOR\nThe
coded text is \n";

for(int
qw=0; qw<sr; qw++)

{

for(int c=0; c<n; c+=sr)

cout<<(char)toupper(A[c+qw]);

}

break;

case
2:

clrscr();

do

{

cout<<"Enter
the number of characters in your code ";

cin>>n;

}
while(SQR(n)==0);

cout<<"Enter
the cipher text as it appears in rows \n";

for(int
b=0; b<n; b++)

{

cin>>A[b];

cout<<"\nThe
decoded text is \n";

for(int
h=0; h<sr; h++)

{

for(int
c=0; c<n; c+=sr)

cout<<A[c+h];

} }

break;

}

getch();

}

## 0 comments