El cifrado César, también conocido como cifrado por desplazamiento o código de César, es una de las técnicas de cifrado más simples la cual implementaremos en este post utilizando el lenguaje de programación Kotlin.
Es un tipo de cifrado por sustitución en el que una letra en el texto original es reemplazada por otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto. Por ejemplo, con un desplazamiento de 3, la A sería sustituida por la D (situada 3 lugares a la derecha de la A), la B sería reemplazada por la E, etc. Este método debe su nombre a Julio César, que lo usaba para comunicarse con sus generales. [Santa Wikipedia]
Cifrado Cesar en Kotlin
1 fun main(args : Array<String>){ 2 3 val ALFABETO:String = "abcdefghijklmnopqrstuvwxyz" 4 5 /** 6 * determina si un texto dado pertenece al abcedario 7 * @param texto 8 * @return boolean 9 */ 10 fun esLetra(texto:String):Boolean{ 11 return texto.matches("[a-z]+".toRegex()) 12 } 13 14 /** 15 * Cifra mensaje utilizando el Codigo Cesar 16 * @param mensaje 17 * @param desplazamiento 18 * @return String Texto cifrado 19 */ 20 fun encriptar(mensaje:String, desplazamiento:Int):String{ 21 var textoCesar:String="" 22 for( i in 0..mensaje.length-1){ 23 if(esLetra(mensaje.toLowerCase().get(i).toString())){ 24 //Obtiene posicion del caracter "i" del mensaje en el alfabeto 25 var posicionActual:Int = ALFABETO.indexOf(mensaje.toLowerCase().get(i)) 26 //Obtiene nueva posicion 27 var nuevaPosicion:Int = ((desplazamiento + posicionActual) % 26) 28 //Obtiene nuevo caracter y concatena en mensaje 29 textoCesar += ALFABETO.get(nuevaPosicion) 30 }else{//ignora y concatena caracter original en mensaje 31 textoCesar += mensaje.toLowerCase().get(i).toString() 32 } 33 } 34 return textoCesar 35 } 36 37 /** 38 * Descifra mensaje utilizando el Codigo Cesar 39 * @param mensajeCifrado 40 * @param desplazamiento 41 * @return String mensaje descifrado 42 */ 43 fun desencriptar(mensajeCifrado:String, desplazamiento:Int):String{ 44 var mensaje:String="" 45 for( i in 0..mensajeCifrado.length-1){ 46 if(esLetra(mensajeCifrado.toLowerCase().get(i).toString())){ 47 var posicionActual:Int = ALFABETO.indexOf(mensajeCifrado.toLowerCase().get(i)) 48 var nuevaPosicion:Int = ((posicionActual - desplazamiento) % 26) 49 if (nuevaPosicion < 0) 50 { 51 nuevaPosicion = ALFABETO.length + nuevaPosicion 52 } 53 mensaje += ALFABETO.get(nuevaPosicion) 54 }else{//ignora y concatena en mensaje 55 mensaje += mensajeCifrado.toLowerCase().get(i).toString() 56 } 57 } 58 return mensaje 59 } 60 61 // 62 var mensaje:String = "6 de Agosto de 1825: Independencia de la República de Bolivia" 63 println("Original : " + mensaje) 64 var cifrado:String = encriptar(mensaje,3) 65 println("Cifrado : " + cifrado) 66 println("Descifrado: " + desencriptar(cifrado,3)) 67 68 }
Ejecutando el código anterior tenemos:
enjoy!!!
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el...
Continuando con los tutoriales sobre LibGDX (Librería para el desarrollo de videojuegos), en esta ocasión veremos como e...
Java Printing nos permite hacer uso de las impresoras del sistema para, valga la redundancia 🙂 imprimir los gráficos de...
En este post, crearemos una tabla swing que implemente un control jcombobox en una columna de una tabla, llenaremos con...
A veces navegando en la internet buscando novedades , investigando o simplemente perdiendo el tiempo 🙂 se encuentran cos...
VLC Media Player es un reproductor multimedia de código abierto muy popular desarrollado por el proyecto VideoLAN. VLCJ...
El gigante tecnologico Google a puesto un bonito Doodle en su buscador que esta fascinando a sus millones de usuarios qu...
WhatsApp anuncio a través de su blog que ya se encuentra disponible la función de envío de fotos y videos TEMPORALES, es...
Muchas de las innovaciones computacionales de la NASA se desarrollaron para ayudar a explorar el espacio, pero ahora la...
TikTok es una plataforma de microvideos muy popular entre los jóvenes el cual cuenta ya con millones de videos cortps de...