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