Estoy tratando de crear un código Java que funcione. Creé una función de encriptación que toma cualquier símbolo en una cadena y lo reemplaza con un valor de una matriz.
El problema es muy simple. La función de descifrado debe tomar cualquier valor escrito en una matriz y usarlo para descifrar. El código lo describe mejor que yo.
case "1" -> output += n_encryptions[0]; // Then in decrypt(): case n_encryptions[0] -> output += "1"; // Sadly, this creates an errorMi objetivo es crear un sistema de cifrado y descifrado fácilmente modificable, ya que planeo cambiar estos valores en el futuro.
Necesito una forma de usar un valor de matriz (n_encryptions[0] en el ejemplo) como parámetro de caso.
Editar: supongo que una declaración if es la mejor opción. ¡Gracias!
¿Es posible usar un valor de matriz como valor de caso de cambio?
No, no es.
Las etiquetas de cambio (a la derecha de la palabra case ) deben ser expresiones constantes en tiempo de compilación.
Necesito una forma de usar un valor de matriz (n_encryptions[0] en el ejemplo) como parámetro de caso.
¿Por qué necesitas esto? Seguramente se puede expresar de otra forma, por ejemplo usando if .
AFAIU tu problema, un enfoque habitual para esto es tener 2 matrices
char[] from = {'a','b','c'}; char[] to = {'1','e','@'}; Lea su entrada carácter por carácter, busque la posición del carácter from y reemplácelo con el carácter desde la misma posición to .
Inversa, lo mismo (hasta -> desde).
Sólo estoy sugiriendo una forma de resolver el problema. Puede usar un Map<Character, Character> para el cifrado y otro para el descifrado. Puede adaptar el siguiente programa a sus necesidades.
import java.util.HashMap; import java.util.Map; public class Test { public static void main (String[] args) { Map<Character, Character> encryptionMap = new HashMap<>(); encryptionMap.put('a', '-'); encryptionMap.put('b', '+'); encryptionMap.put('-', '1'); encryptionMap.put('+', '3'); String plainText = "a+ba"; String encryptedText = ""; for (int i = 0; i < plainText.length(); i++) { char ch = plainText.charAt(i); encryptedText += encryptionMap.get(ch); } System.out.println("Plain Text: " + plainText); System.out.println("Encrypted Text: " + encryptedText); Map<Character, Character> decryptionMap = new HashMap<>(); decryptionMap.put('-', 'a'); decryptionMap.put('+', 'b'); decryptionMap.put('1', '-'); decryptionMap.put('3', '+'); String decryptedText = ""; for (int i = 0; i < encryptedText.length(); i++) { char ch = encryptedText.charAt(i); decryptedText += decryptionMap.get(ch); } System.out.println("Decrypted Text: " + decryptedText); } }