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) ;
}
}
Y2xhc3MgQ2Flc2FyIHsgICAKICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFMUEhBU0laRSA9IDI2OyAgICAKICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2hhcltdIGFscGhhID0geydBJywgJ0InLCAnQycsICAKICAgICAgICAgJ0QnLCdFJywgJ0YnLCdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLCAnTycsICdQJywgJ1EnLCAKICAgICAgICAgJ1InLCdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onfTsgICAgCiAgICBwcm90ZWN0ZWQgY2hhcltdIGVuY3J5cHQgPSBuZXcgY2hhcltBTFBIQVNJWkVdOwogICAgcHJvdGVjdGVkIGNoYXJbXSBkZWNyeXB0ID0gIG5ldyBjaGFyW0FMUEhBU0laRV07ICAgIAoKICAgIHB1YmxpYyBDYWVzYXIoKXsgICAgICAgIAoKICAgIAlmb3IoaW50IGkgPSAwOyBpIDwgQUxQSEFTSVpFOyBpKyspICAgICAgICAKCiAgICAgICAgCWVuY3J5cHRbaV0gPSBhbHBoYVsoaSArIDMpICUgQUxQSEFTSVpFXTsgICAgICAgICAgICAgCiAgICAKICAgIAlmb3IgKGludCBpID0gMDsgaSA8IEFMUEhBU0laRTsgaSsrKQogICAgICAgIAogICAgICAgIAlkZWNyeXB0W2VuY3J5cHRbaV0gLSAnQSddID0gYWxwaGFbaV07ICAgIAp9CiAgICAKLy8gRW5jcnlwdGlvbiBNZXRob3JkICAgIAogICAgcHVibGljIFN0cmluZyBlbmNyeXB0KFN0cmluZyBzZWNyZXQpewogICAgICAgIAogICAgICAgIGNoYXJbXSBtZXNzID0gc2VjcmV0LnRvQ2hhckFycmF5KCk7CiAgICAgICAgCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtZXNzLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKENoYXJhY3Rlci5pc1VwcGVyQ2FzZShtZXNzW2ldKSkKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgbWVzc1tpXSA9IGVuY3J5cHRbbWVzc1tpXSAtICdBJ107CiAgICAgICAgCiAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmcobWVzcyk7CiAgICB9CiAgICAKLy8gRGVjcnlwdGlvbiBNZXRob3JkICAgIAogICAgcHVibGljIFN0cmluZyBkZWNyeXB0KFN0cmluZyBzZWNyZXQpewogICAgICAgIAogICAgICAgIGNoYXJbXSBtZXNzID0gc2VjcmV0LnRvQ2hhckFycmF5KCk7CiAgICAgICAgCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtZXNzLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKENoYXJhY3Rlci5pc1VwcGVyQ2FzZShtZXNzW2ldKSkKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgbWVzc1tpXSA9IGRlY3J5cHRbbWVzc1tpXSAtICdBJ107CiAgICAgICAgCiAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmcobWVzcyk7CiAgICAgICAgCiAgICB9CiAgICAgICAgCi8vIE1haW4gTWV0aG9yZCAgICAgICAgCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAKICAgICAgICBDYWVzYXIgY2lwaGVyID0gbmV3IENhZXNhcigpOwogICAgICAgIAogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRW5jcnlwdGlvbiBvcmRlciA9ICIgKyBuZXcgU3RyaW5nKGNpcGhlci5lbmNyeXB0KSApOwogICAgICAgIAogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRGVjcnlwdGlvbiBvcmRlciA9ICIgKyBuZXcgU3RyaW5nKGNpcGhlci5kZWNyeXB0KSApOwogICAgICAgIAogICAgICAgIFN0cmluZyBzZWNyZXQgPSAiVEhFIEVOR0xFIElTIElOIFBMQTsgTUVFVCBBVCBKT0UnUyI7CiAgICAgICAgCiAgICAgICAgc2VjcmV0ID0gY2lwaGVyLmVuY3J5cHQoc2VjcmV0KTsKICAgICAgICAKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc2VjcmV0KTsKICAgICAgICAKICAgICAgICBzZWNyZXQgPSBjaXBoZXIuZGVjcnlwdChzZWNyZXQpOwogICAgICAgIAogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzZWNyZXQpOyAgICAgICAgCiAgICB9ICAgIAp9Cgo=