public class Caesar {
public static final int ALPHASIZE = 26;
public static final char[] alpha = {'A', 'B', 'C',
'D','E', 'F','G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R','S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
protected char[] encrypt = new char[ALPHASIZE];
protected char[] decrypt = new char[ALPHASIZE];
public Caesar(){
for(int i = 0; i < ALPHASIZE; i++)
encrypt[i] = alpha[(i + 3) % ALPHASIZE];
for (int i = 0; i < ALPHASIZE; i++)
decrypt[encrypt[i] - 'A'] = alpha[i];
}
// Encryption Methord
char[] mess = secret.toCharArray();
for (int i = 0; i < mess.length; i++)
mess[i] = encrypt[mess[i] - 'A'];
}
// Decryption Methord
char[] mess = secret.toCharArray();
for (int i = 0; i < mess.length; i++)
mess[i] = decrypt[mess[i] - 'A'];
}
// Main Methord
public static void main
(String[] args
) {
Caesar cipher = new Caesar();
System.
out.
println("Encryption order = " + new String(cipher.
encrypt) );
System.
out.
println("Decryption order = " + new String(cipher.
decrypt) );
String secret
= "THE ENGLE IS IN PLA; MEET AT JOE'S";
secret = cipher.encrypt(secret);
secret = cipher.decrypt(secret);
}
}
cHVibGljIGNsYXNzIENhZXNhciB7ICAgCiAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBTFBIQVNJWkUgPSAyNjsgICAgCiAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNoYXJbXSBhbHBoYSA9IHsnQScsICdCJywgJ0MnLCAgCiAgICAgICAgICdEJywnRScsICdGJywnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsICdOJywgJ08nLCAnUCcsICdRJywgCiAgICAgICAgICdSJywnUycsICdUJywgJ1UnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJ307ICAgIAogICAgcHJvdGVjdGVkIGNoYXJbXSBlbmNyeXB0ID0gbmV3IGNoYXJbQUxQSEFTSVpFXTsKICAgIHByb3RlY3RlZCBjaGFyW10gZGVjcnlwdCA9ICBuZXcgY2hhcltBTFBIQVNJWkVdOyAgICAKCiAgICBwdWJsaWMgQ2Flc2FyKCl7ICAgICAgICAKCiAgICAJZm9yKGludCBpID0gMDsgaSA8IEFMUEhBU0laRTsgaSsrKSAgICAgICAgCgogICAgICAgIAllbmNyeXB0W2ldID0gYWxwaGFbKGkgKyAzKSAlIEFMUEhBU0laRV07ICAgICAgICAgICAgIAogICAgCiAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBBTFBIQVNJWkU7IGkrKykKICAgICAgICAKICAgICAgICAJZGVjcnlwdFtlbmNyeXB0W2ldIC0gJ0EnXSA9IGFscGhhW2ldOyAgICAKfQogICAgCi8vIEVuY3J5cHRpb24gTWV0aG9yZCAgICAKICAgIHB1YmxpYyBTdHJpbmcgZW5jcnlwdChTdHJpbmcgc2VjcmV0KXsKICAgICAgICAKICAgICAgICBjaGFyW10gbWVzcyA9IHNlY3JldC50b0NoYXJBcnJheSgpOwogICAgICAgIAogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWVzcy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChDaGFyYWN0ZXIuaXNVcHBlckNhc2UobWVzc1tpXSkpCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIG1lc3NbaV0gPSBlbmNyeXB0W21lc3NbaV0gLSAnQSddOwogICAgICAgIAogICAgICAgIHJldHVybiBuZXcgU3RyaW5nKG1lc3MpOwogICAgfQogICAgCi8vIERlY3J5cHRpb24gTWV0aG9yZCAgICAKICAgIHB1YmxpYyBTdHJpbmcgZGVjcnlwdChTdHJpbmcgc2VjcmV0KXsKICAgICAgICAKICAgICAgICBjaGFyW10gbWVzcyA9IHNlY3JldC50b0NoYXJBcnJheSgpOwogICAgICAgIAogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWVzcy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChDaGFyYWN0ZXIuaXNVcHBlckNhc2UobWVzc1tpXSkpCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIG1lc3NbaV0gPSBkZWNyeXB0W21lc3NbaV0gLSAnQSddOwogICAgICAgIAogICAgICAgIHJldHVybiBuZXcgU3RyaW5nKG1lc3MpOwogICAgICAgIAogICAgfQogICAgICAgIAovLyBNYWluIE1ldGhvcmQgICAgICAgIAogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgCiAgICAgICAgQ2Flc2FyIGNpcGhlciA9IG5ldyBDYWVzYXIoKTsKICAgICAgICAKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVuY3J5cHRpb24gb3JkZXIgPSAiICsgbmV3IFN0cmluZyhjaXBoZXIuZW5jcnlwdCkgKTsKICAgICAgICAKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkRlY3J5cHRpb24gb3JkZXIgPSAiICsgbmV3IFN0cmluZyhjaXBoZXIuZGVjcnlwdCkgKTsKICAgICAgICAKICAgICAgICBTdHJpbmcgc2VjcmV0ID0gIlRIRSBFTkdMRSBJUyBJTiBQTEE7IE1FRVQgQVQgSk9FJ1MiOwogICAgICAgIAogICAgICAgIHNlY3JldCA9IGNpcGhlci5lbmNyeXB0KHNlY3JldCk7CiAgICAgICAgCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHNlY3JldCk7CiAgICAgICAgCiAgICAgICAgc2VjcmV0ID0gY2lwaGVyLmRlY3J5cHQoc2VjcmV0KTsKICAgICAgICAKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc2VjcmV0KTsgICAgICAgIAogICAgfSAgICAKfQoK