diff --git a/README.md b/README.md index 5b06c95..8a7c9b7 100644 --- a/README.md +++ b/README.md @@ -1 +1,7 @@ -# criptoKotlin \ No newline at end of file +[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/2QuvjImd) +[![Open in Visual Studio Code](https://classroom.github.com/assets/open-in-vscode-2e0aaae1b6195c2367325f4f02e2d04e9abb55f0b24a779b69b11b9e10269abc.svg)](https://classroom.github.com/online_ide?assignment_repo_id=18756652&assignment_repo_type=AssignmentRepo) +# criptoKotlin + +El código corresponde al cifrado railfence. + +Dentro de la carpeta railfence-Maria-Fer-UD/src se encuentra el main en donde se encuentra el código y los archivos de entrada(con el texto) y el archivo en donde se almacena el resultado del cifrado o descifrado. diff --git a/railfence-Maria-Fer-UD/.gitignore b/railfence-Maria-Fer-UD/.gitignore new file mode 100644 index 0000000..9f97022 --- /dev/null +++ b/railfence-Maria-Fer-UD/.gitignore @@ -0,0 +1 @@ +target/ \ No newline at end of file diff --git a/railfence-Maria-Fer-UD/.idea/.gitignore b/railfence-Maria-Fer-UD/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/railfence-Maria-Fer-UD/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/railfence-Maria-Fer-UD/.idea/compiler.xml b/railfence-Maria-Fer-UD/.idea/compiler.xml new file mode 100644 index 0000000..e2bbfc1 --- /dev/null +++ b/railfence-Maria-Fer-UD/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/railfence-Maria-Fer-UD/.idea/encodings.xml b/railfence-Maria-Fer-UD/.idea/encodings.xml new file mode 100644 index 0000000..942f3a2 --- /dev/null +++ b/railfence-Maria-Fer-UD/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/railfence-Maria-Fer-UD/.idea/jarRepositories.xml b/railfence-Maria-Fer-UD/.idea/jarRepositories.xml new file mode 100644 index 0000000..4d27ef0 --- /dev/null +++ b/railfence-Maria-Fer-UD/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/railfence-Maria-Fer-UD/.idea/kotlinc.xml b/railfence-Maria-Fer-UD/.idea/kotlinc.xml new file mode 100644 index 0000000..c22b6fa --- /dev/null +++ b/railfence-Maria-Fer-UD/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/railfence-Maria-Fer-UD/.idea/misc.xml b/railfence-Maria-Fer-UD/.idea/misc.xml new file mode 100644 index 0000000..001e756 --- /dev/null +++ b/railfence-Maria-Fer-UD/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/railfence-Maria-Fer-UD/.idea/vcs.xml b/railfence-Maria-Fer-UD/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/railfence-Maria-Fer-UD/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/railfence-Maria-Fer-UD/pom.xml b/railfence-Maria-Fer-UD/pom.xml new file mode 100644 index 0000000..316f6a7 --- /dev/null +++ b/railfence-Maria-Fer-UD/pom.xml @@ -0,0 +1,88 @@ + + + 4.0.0 + + org.example + railfence-Maria-Fer-UD + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + 2.1.10 + + + compile + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + MainKt + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + 2.1.10 + test + + + org.junit.jupiter + junit-jupiter + 5.10.0 + test + + + org.jetbrains.kotlin + kotlin-stdlib + 2.1.10 + + + + \ No newline at end of file diff --git a/railfence-Maria-Fer-UD/src/cifrado.txt b/railfence-Maria-Fer-UD/src/cifrado.txt new file mode 100644 index 0000000..4b7009c --- /dev/null +++ b/railfence-Maria-Fer-UD/src/cifrado.txt @@ -0,0 +1 @@ +Lo que importa verdaderamente en la vida no son los objetivos que nos marcamos, sino los caminos que seguimos para lograrlo (Peter Bamm) \ No newline at end of file diff --git a/railfence-Maria-Fer-UD/src/descifrado.txt b/railfence-Maria-Fer-UD/src/descifrado.txt new file mode 100644 index 0000000..b86f780 --- /dev/null +++ b/railfence-Maria-Fer-UD/src/descifrado.txt @@ -0,0 +1 @@ +Lumtedme v slotsesros i usror(eaoqeipravraeaet nl ian o o beio u o acms iolscmnsqesgio aalgal PtrBm) o drneadonsjvqnma,noaouemp roe m \ No newline at end of file diff --git a/railfence-Maria-Fer-UD/src/main/kotlin/Main.kt b/railfence-Maria-Fer-UD/src/main/kotlin/Main.kt new file mode 100644 index 0000000..f8abdd6 --- /dev/null +++ b/railfence-Maria-Fer-UD/src/main/kotlin/Main.kt @@ -0,0 +1,103 @@ +//Estudiante: Maria Fernanda Uch Dzib +//Matrícula: 200300643 + +import java.io.File +import javax.swing.JOptionPane +import javax.swing.JScrollPane +import javax.swing.JTextArea + + +//Agregar la funcionalidad de lectura de archivos de texto +//La función lee un archivo de entrada +fun leer_archivo_texto(lectura_archivo:String):String { + var archivo = File(lectura_archivo) + var texto = archivo.readText() + return texto +} + +fun railfence_cifrar(texto:String, rail:Int): String +{ + var resul:String = "" + var repeticion = 2 * (rail -1) //Cada vez que inicia el patron en zigzag, cada 4 + for (r in 0..rail-1){ + for (t in texto.indices){ + if (t % repeticion == r || t % repeticion == repeticion-r){ // + resul+=texto[t] + } + } + } + return resul +} + +fun railfence_descifrar(texto:String, rail:Int): String { + var resul = Array (texto.length){""} //Array vacio + var repeticion = 2 * (rail -1) + var aux_i = 0 + for (r in 0..rail-1){ + for (t in texto.indices){ + if (t % repeticion == r || t % repeticion == repeticion-r){ + + resul[t] = texto[aux_i++].toString() //La posición se agrega en orden + } + } + } + return (resul).reduce{a,b -> a+b} //Convertir el arreglo en string +} + +fun main(){ + var option = 0 + var resul:String = "" + var texto = "" + var accion = "" + var path_resultado = File("src/resultado.txt") + do { + option = Integer.parseInt(JOptionPane.showInputDialog("Cifrado Railfence\n---Menú---\n1. Cifrar\n2. Descifrar\n3. Salir")) + + if (option != 1 && option != 2) { + break + } + //var path = JOptionPane.showInputDialog(null, "Introduce el path del archivo de entrada:") + //var texto = leer_archivo_texto(path) + + var rails = 3 //Se utilizan 3 rieles + JOptionPane.showMessageDialog(null,"Número de Rails = $rails") + when (option){ + 1 -> { + accion = "cifrado" + var path_cifrar = "src/cifrado.txt" + + texto = leer_archivo_texto(path_cifrar) + resul = railfence_cifrar(texto, rails) + path_resultado.writeText(resul) + + JOptionPane.showMessageDialog(null, "El texto de entrada es: \n$texto") + JOptionPane.showMessageDialog(null, "Resultado guardado en el archivo ${path_resultado}") + + } + 2 -> { + accion = "descifrado" + var path_descifrar = "src/descifrado.txt" + + texto = leer_archivo_texto(path_descifrar) + resul = railfence_descifrar(texto, rails) + path_resultado.writeText(resul) + + JOptionPane.showMessageDialog(null, "El texto de entrada es: \n$texto") + JOptionPane.showMessageDialog(null, "Resultado guardado en el archivo ${path_resultado}") + } + } + //Para la visualización del texto cifrado o descifrado + val area_resultado = JTextArea("$resul") + area_resultado.lineWrap = true + area_resultado.wrapStyleWord = true + area_resultado.isEditable = false + + val scrollPane = JScrollPane(area_resultado) + scrollPane.preferredSize = java.awt.Dimension(300, 150) + + //println("\nEl texto $accion del archivo es: \n$resul") //Imprimir en consola + JOptionPane.showMessageDialog(null, scrollPane, "El texto $accion del archivo es:", + JOptionPane.INFORMATION_MESSAGE) + + }while (true) +} diff --git a/railfence-Maria-Fer-UD/src/resultado.txt b/railfence-Maria-Fer-UD/src/resultado.txt new file mode 100644 index 0000000..4b7009c --- /dev/null +++ b/railfence-Maria-Fer-UD/src/resultado.txt @@ -0,0 +1 @@ +Lo que importa verdaderamente en la vida no son los objetivos que nos marcamos, sino los caminos que seguimos para lograrlo (Peter Bamm) \ No newline at end of file diff --git a/railfence-Maria-Fer-UD/target/classes/META-INF/railfence-Maria-Fer-UD.kotlin_module b/railfence-Maria-Fer-UD/target/classes/META-INF/railfence-Maria-Fer-UD.kotlin_module new file mode 100644 index 0000000..a477ea3 Binary files /dev/null and b/railfence-Maria-Fer-UD/target/classes/META-INF/railfence-Maria-Fer-UD.kotlin_module differ