// CipherTester.java // Use AS-IS to test CS 10 assignment 5, part 2, Fall 2008 // cmc, updated 11/18/08 import java.io.IOException; import java.util.Scanner; public class CipherTester { public static void main(String[] args) throws IOException { if (args.length < 1 || args.length > 2) fatalMessage("usage: java CipherTester [-d] -kKEY"); String key = null; boolean encrypt = true; // default action for (String arg : args) if (arg.charAt(0) == '-') { // an option String option = arg.substring(1, 2); if (option.equals("d")) encrypt = false; else if (option.equals("k")) { if (arg.length() < 3) fatalMessage("missing key string with -k option"); key = arg.substring(2); } else fatalMessage("bad option: " + arg); } else fatalMessage("argument not an option: " + arg); // verify a key was entered if (key == null) fatalMessage("did not enter a key"); // accumulate all text in a StringBuilder and retrieve string StringBuilder buffer = new StringBuilder(); Scanner input = new Scanner(System.in); String newline = String.format("%n"); // to replace what Scanner strips while (input.hasNextLine()) buffer.append( input.nextLine() + newline ); String text = buffer.toString(); // create cipher object, then encrypt or decrypt the text and print Cipher cipher = new VigCipher(key); String result; if (encrypt) result = cipher.encrypt(text); else result = cipher.decrypt(text); System.out.print(result); } // utility prints error message and exits private static void fatalMessage(String message) { System.err.println(message); System.exit(1); } }