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 in his private correspondence.

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*

When encrypting, a person looks up each letter of the message in the "plain" line and writes down the corresponding letter in the "cipher" line.

Deciphering is done in reverse.

*Ciphertext: wkh txlfn eurzq ira mxpsv ryhu wkh odcb grj*

*Plaintext: the quick brown fox jumps over the lazy dog*

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,

(There are different definitions for the modulo operation. In the above, the result is in the range 0...25. I.e., if x+n or x-n are not in the range 0...25, we have to subtract or add 26.)

The replacement remains the same throughout the message, so the cipher is classed as a type of monoalphabetic substitution, as opposed to polyalphabetic substitution.

**Java code for Encryption**

(using a generic key and not fixed key)

*for(i=0;i<inp.length();++i){*

c=inp.charAt(i);

if(c>=65 && c<=90){

j=c-65;

j=(j+key)%26;

j=j+65;

k=(char)j;

out=out+k;

}

else if(c>=97 && c<=122){

j=c-97;

j=(j+key)%26;

j=j+97;

k=(char)j;

out=out+k;

}

else

out=out+c;

}

c=inp.charAt(i);

if(c>=65 && c<=90){

j=c-65;

j=(j+key)%26;

j=j+65;

k=(char)j;

out=out+k;

}

else if(c>=97 && c<=122){

j=c-97;

j=(j+key)%26;

j=j+97;

k=(char)j;

out=out+k;

}

else

out=out+c;

}

**Java code for Decryption**

for(i=0;i<inp.length();++i){

c=inp.charAt(i);

if(c>=65 && c<=90){

j=c-65;

j=(j-key)%26;

j=j+65;

k=(char)j;

out=out+k;

}

else if(c>=97 && c<=122){

j=c-97;

j=(j-key)%26;

j=j+97;

k=(char)j;

out=out+k;

}

else

out=out+c;

}

c=inp.charAt(i);

if(c>=65 && c<=90){

j=c-65;

j=(j-key)%26;

j=j+65;

k=(char)j;

out=out+k;

}

else if(c>=97 && c<=122){

j=c-97;

j=(j-key)%26;

j=j+97;

k=(char)j;

out=out+k;

}

else

out=out+c;

}

Good one ....

ReplyDeleteanyone have c programme code for this one?

ReplyDelete