/** * title: Caesar Cipher * author: Matt Rankin, 2007 */ import java.io.*; public class Caesar{ static char type; static int key; static String input; public static void main(String[] argv){ if(argv.length<1 || argv.length>4){ System.out.println(help()); System.exit(0); } type=(argv[0].matches("-[edDh]"))?argv[0].charAt(1):'h'; switch(type){ case 'h': System.out.println(help()); System.exit(0); break; case 'e': key=getKey(argv[1]); input=getInput(argv).toLowerCase(); System.out.println("\nPlaintext:\n\n"+input+"\n\nCiphertext("+ Math.abs(key)+"):\n\n"+ shift(input,key).toUpperCase()); break; case 'd': key=getKey(argv[1])*-1; input=getInput(argv).toUpperCase(); System.out.println("\nCiphertext:\n\n"+input+"\n\nPlaintext("+ Math.abs(key)+"):\n\n"+ shift(input,key).toLowerCase()); break; case 'D': input=getInput(argv).toUpperCase(); System.out.println("\nCiphertext:\n\n"+input+"\n\nPlaintexts:\n"); for(int i=1;i<26;i++){ System.out.println(shift(input,i*-1).toLowerCase()+" ("+i+")\n"); } break; } System.exit(0); } static int getKey(String param){ if(!param.matches("\\d+")) epicFail("Invalid key!"); return Integer.parseInt(param)%26; } static String getInput(String[] params){ StringBuffer str=new StringBuffer(65536); int x=-1; for(int i=0;i