// Ceasar Cipher
#include <iostream>
using namespace std;
string toUpperCase(string text) {
for (char &ch : text) {
ch = toupper(ch);
}
return text;
}
string encrypt(string text, int key) {
text = toUpperCase(text); // Convert to uppercase
string result = "";
for (char ch : text) {
if (isupper(ch)) {
result += char((ch - 'A' + key) % 26 + 'A');
} else {
result += ch;
}
}
return result;
}
string decrypt(string cipher, int key) {
cipher = toUpperCase(cipher); // Convert to uppercase
string result = "";
for (char ch : cipher) {
if (isupper(ch)) {
result += char((ch - 'A' - key + 26) % 26 + 'A');
} else {
result += ch;
}
}
return result;
}
int main() {
string name = "AtulMangla"; // lowercase + uppercase mix
int key = 3;
string cipherText = encrypt(name, key);
cout << "Cipher Text: " << cipherText << endl;
string decodedText = decrypt(cipherText, key);
cout << "Decoded Text: " << decodedText << endl;
return 0;
}
Ly8gQ2Vhc2FyIENpcGhlcgoKI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RyaW5nIHRvVXBwZXJDYXNlKHN0cmluZyB0ZXh0KSB7CiAgICBmb3IgKGNoYXIgJmNoIDogdGV4dCkgewogICAgICAgIGNoID0gdG91cHBlcihjaCk7CiAgICB9CiAgICByZXR1cm4gdGV4dDsKfQoKc3RyaW5nIGVuY3J5cHQoc3RyaW5nIHRleHQsIGludCBrZXkpIHsKICAgIHRleHQgPSB0b1VwcGVyQ2FzZSh0ZXh0KTsgLy8gQ29udmVydCB0byB1cHBlcmNhc2UKICAgIHN0cmluZyByZXN1bHQgPSAiIjsKICAgIGZvciAoY2hhciBjaCA6IHRleHQpIHsKICAgICAgICBpZiAoaXN1cHBlcihjaCkpIHsKICAgICAgICAgICAgcmVzdWx0ICs9IGNoYXIoKGNoIC0gJ0EnICsga2V5KSAlIDI2ICsgJ0EnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXN1bHQgKz0gY2g7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKfQoKc3RyaW5nIGRlY3J5cHQoc3RyaW5nIGNpcGhlciwgaW50IGtleSkgewogICAgY2lwaGVyID0gdG9VcHBlckNhc2UoY2lwaGVyKTsgLy8gQ29udmVydCB0byB1cHBlcmNhc2UKICAgIHN0cmluZyByZXN1bHQgPSAiIjsKICAgIGZvciAoY2hhciBjaCA6IGNpcGhlcikgewogICAgICAgIGlmIChpc3VwcGVyKGNoKSkgewogICAgICAgICAgICByZXN1bHQgKz0gY2hhcigoY2ggLSAnQScgLSBrZXkgKyAyNikgJSAyNiArICdBJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmVzdWx0ICs9IGNoOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHQ7Cn0KCmludCBtYWluKCkgewogICAgc3RyaW5nIG5hbWUgPSAiQXR1bE1hbmdsYSI7ICAvLyBsb3dlcmNhc2UgKyB1cHBlcmNhc2UgbWl4CiAgICBpbnQga2V5ID0gMzsKCiAgICBzdHJpbmcgY2lwaGVyVGV4dCA9IGVuY3J5cHQobmFtZSwga2V5KTsKICAgIGNvdXQgPDwgIkNpcGhlciBUZXh0OiAiIDw8IGNpcGhlclRleHQgPDwgZW5kbDsKCiAgICBzdHJpbmcgZGVjb2RlZFRleHQgPSBkZWNyeXB0KGNpcGhlclRleHQsIGtleSk7CiAgICBjb3V0IDw8ICJEZWNvZGVkIFRleHQ6ICIgPDwgZGVjb2RlZFRleHQgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=