import java.io.*; public class Vigenere2 { public static void main(String args[]) { int k; int i; int p; String casos = null; String message = null; String key = null; String alpha = new String("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); BufferedReader buff = new BufferedReader(new InputStreamReader(System.in)); try { System.out.println("Bienvenido, porfavor, eliga una opción. Escriba 1 si desea encriptar su mensaje, 2 si desea desencriptar y 3 para salir: "); casos = buff.readLine(); k = Integer.parseInt(casos); switch (k) { case 1: try { System.out.print("Mensaje: "); message = buff.readLine(); message = message.toUpperCase(); System.out.print("Llave: "); key = buff.readLine(); key = key.toUpperCase(); char[] output = new char[message.length()]; for (i = 0; i < message.length(); i++) { if (alpha.indexOf(message.charAt(i)) >= 0) { p = (int)message.charAt(i) + (int)key.charAt(i%key.length()); output[i] = alpha.charAt(p >= 0 ? p % alpha.length() : alpha.length() + p); } else { output[i] = message.charAt(i); } } System.out.print(new String(output)+"\n"); } catch (IOException e) { System.out.print("Error.\n"); System.exit(1); } break; case 2: try { System.out.print("Mensaje: "); message = buff.readLine(); message = message.toUpperCase(); System.out.print("Llave: "); key = buff.readLine(); key = key.toUpperCase(); char[] output = new char[message.length()]; for (i = 0; i < message.length(); i++) { if (alpha.indexOf(message.charAt(i)) >= 0) { p = (int)message.charAt(i) - (int)key.charAt(i%key.length()); output[i] = alpha.charAt(p >= 0 ? p % alpha.length() : alpha.length() + p); } else { output[i] = message.charAt(i); } } System.out.print(new String(output)+"\n"); } catch (IOException e) { System.out.print("Error.\n"); System.exit(1); } break; case 3: System.out.println("Hasta la vista!"); System.exit(0); break; default: System.out.println("Error!"); System.exit(0); break; } } catch (IOException e) { System.out.print("Error.\n"); System.exit(1); } } }