Posted on 20 April,2018 at 10pm IST
Caesar Cipher is one of the encryption technique in which each letter in a string is shifted by fixed number of positions. For example, with a right shift of 3, D would be replaced by G, E would become H, and so on.
Input :- ----------------------- 11 ILoveManisz 2 Output:- ----------------------- KNqxgOcpkub Increment each character by 2 in input string ILoveManisz ------------------------------------------------------------------
First input is number of characters in a string. Here, we enter 11 for input string ILoveManisz which contains 11 characters. Then it takes input to shift each individual character by the given fixed number. Here, we enter 2 for shifting each indivdual characters by 2.
We use C++ for this program..
#include <iostream>
using namespace std;
string caesarCipher(string text, int s) {
string result = "";
// traverse text
for (int i=0;i<text.length();i++)
{
// Encrypt Uppercase letters
if (isupper(text[i]))
result += char(int(text[i]+s-65)%26 +65);
// Encrypt Lowercase letters
else if(islower(text[i]))
result += char(int(text[i]+s-97)%26 +97);
// Encrypt special characters
else {
result += text[i];
}
}
// Return the resulting string
return result;
}
int main() {
int n;
cin >> n;
string s;
cin >> s;
int k;
cin >> k;
string result = caesarCipher(s, k);
cout << result << endl;
return 0;
}
Beginning with main() function, after taking input from user for string ILoveManiz function caesarCipher(s,k) will be called which contains text ILoveManiz and shifting offset 2 . for loop will begin with index i = 0. if condition checks whether given character is in Uppercase or in Lowercase or an special character like _,? etc. So, In string "ILoveManiz" I is uppercase so it satisfies first if condition. Result which is of string type will store the result after shifting I by 2 position. After shifting I with 2, result will be K. Logic behind shifting in program is calculated using ASCII values.
char(int(text[i]+s-65)%26 +65);
Firstly we solve the logic inside brackets.
You can refer , ASCII values here A = 65 and a = 97
I whose ASCII value is 73. s gives 2 So 73 + 2 - 65 = 10 Now, 10%26 = 26)10 = Remainder 10. 10 + 65 = 75 char at 75 in ASCII table is K.
After I, there is L whose ASCII value 76 s gives 2 76 + 2 - 65 = 13 13 % 26 = Reaminder 13 13 + 65 = 78 char at 78 is N
Similarly, you can apply it to each individual charcater based on its uppercase or in lowercase format.
After z, next character will be a thats why modulas function is applied in given logic which decides the next character after z.
z is last character with ASCII value 122 122 + 2 - 97 = 27 27 % 26 = Reaminder 1 1 + 65 = 66 char at 66 b