class vigenereCipher {
text = text.toUpperCase();
for (int i = 0, j = 0; i < text.length(); i++) {
char c = text.charAt(i);
if (c < 'A' || c > 'Z') {
continue;
}
res += (char) ((c + key.charAt(j) - 2 * 'A') % 26 + 'A');
j = ++j % key.length();
}
return res;
}
text = text.toUpperCase();
for (int i = 0, j = 0; i < text.length(); i++) {
char c = text.charAt(i);
if (c < 'A' || c > 'Z') {
continue;
}
res += (char) ((c - key.charAt(j) + 26) % 26 + 'A');
j = ++j % key.length();
}
return res;
}
String msg
= "ATTACK AT DAWN"; System.
out.
println("Simulating Vigenere Cipher\n"); System.
out.
println("Input Message : " + msg
); String enc
= encode
(msg, key
); System.
out.
println("Encrypted Message : " + enc
); System.
out.
println("Decrypted Message : " + decode
(enc, key
)); }
}
IGNsYXNzIHZpZ2VuZXJlQ2lwaGVyIHsKc3RhdGljIFN0cmluZyBlbmNvZGUoU3RyaW5nIHRleHQsIGZpbmFsIFN0cmluZyBrZXkpIHsKU3RyaW5nIHJlcyA9ICIiOwp0ZXh0ID0gdGV4dC50b1VwcGVyQ2FzZSgpOwpmb3IgKGludCBpID0gMCwgaiA9IDA7IGkgPCB0ZXh0Lmxlbmd0aCgpOyBpKyspIHsKY2hhciBjID0gdGV4dC5jaGFyQXQoaSk7CmlmIChjIDwgJ0EnIHx8IGMgPiAnWicpIHsKY29udGludWU7Cn0KcmVzICs9IChjaGFyKSAoKGMgKyBrZXkuY2hhckF0KGopIC0gMiAqICdBJykgJSAyNiArICdBJyk7CmogPSArK2ogJSBrZXkubGVuZ3RoKCk7Cn0KcmV0dXJuIHJlczsKfQpzdGF0aWMgU3RyaW5nIGRlY29kZShTdHJpbmcgdGV4dCwgZmluYWwgU3RyaW5nIGtleSkgewpTdHJpbmcgcmVzID0gIiI7CnRleHQgPSB0ZXh0LnRvVXBwZXJDYXNlKCk7CmZvciAoaW50IGkgPSAwLCBqID0gMDsgaSA8IHRleHQubGVuZ3RoKCk7IGkrKykgewpjaGFyIGMgPSB0ZXh0LmNoYXJBdChpKTsKaWYgKGMgPCAnQScgfHwgYyA+ICdaJykgewpjb250aW51ZTsKfQpyZXMgKz0gKGNoYXIpICgoYyAtIGtleS5jaGFyQXQoaikgKyAyNikgJSAyNiArICdBJyk7CmogPSArK2ogJSBrZXkubGVuZ3RoKCk7Cn0KcmV0dXJuIHJlczsKfQpwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbiB7ClN0cmluZyBrZXkgPSAiTEVNT04iOwpTdHJpbmcgbXNnID0gIkFUVEFDSyBBVCBEQVdOIjsKU3lzdGVtLm91dC5wcmludGxuKCJTaW11bGF0aW5nIFZpZ2VuZXJlIENpcGhlclxuIik7ClN5c3RlbS5vdXQucHJpbnRsbigiSW5wdXQgTWVzc2FnZSA6ICIgKyBtc2cpOwpTdHJpbmcgZW5jID0gZW5jb2RlKG1zZywga2V5KTsKU3lzdGVtLm91dC5wcmludGxuKCJFbmNyeXB0ZWQgTWVzc2FnZSA6ICIgKyBlbmMpOwpTeXN0ZW0ub3V0LnByaW50bG4oIkRlY3J5cHRlZCBNZXNzYWdlIDogIiArIGRlY29kZShlbmMsIGtleSkpOwp9Cn0=