Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Kotlin / Cifrado por desplazamiento o código de César

Cifrado por desplazamiento o código de César

Autor jc mouse lunes, julio 23, 2018

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]

Cesar Cifrado

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:

kotlin cifrado

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

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! :)

También Te Podría Interesar

Crear PopupMenu (Ventana Emergente)

Crear PopupMenu (Ventana Emergente)

En este tutorial crearemos una aplicación android que nos permitirá abrir un PopupMenu de donde podremos seleccionar una...

Dibujar Bitmap en Android

Dibujar Bitmap en Android

Android cuenta con una serie de herramientas en su API para el trabajo con gráficos, entre estos podemos mencionar: Bitm...

Compartir texto plano con un ShareActionProvider en Android

Compartir texto plano con un ShareActionProvider en Android

Un Action Provider es un elemento que habita en la Action Bar para incrementar la accesibilidad de nuestras aplicaciones...

CRC32: Verificación de Redundancia Cíclica

CRC32: Verificación de Redundancia Cíclica

El CRC o Verificación de Redundancia Cíclica o Comprobación de redundancia cíclica  es una técnica utilizada para detect...

Transacciones – Uso de Commit y Rollback

Transacciones – Uso de Commit y Rollback

Cuando desarrollamos aplicaciones en java con base de datos debemos tener cuidado en que se cumplan un conjunto de carac...

Crear ventana de ayuda sin JavaHelp

Crear ventana de ayuda sin JavaHelp

Java Help es (o era) una librería para java que permitía añadir ventanas de ayuda HTML a nuestros proyectos, al ser una...

Comparte lo que sabes

Categorias

Últimas entradas

Quasar es un proyecto Open Source basado en el Framework Vue que nos permite desarrollar proyectos de todo tipo, por eje...

Continuando el post de «Introducción a Retrofit» donde realizamos una breve preparación a lo que es el uso de la librerí...

Editar un documento PDF no es tan sencillo como editar un archivo de texto por ejemplo, para editar archivos PDFs necesi...

¿Alguna vez tuviste la necesidad de hacer una captura de pantalla de una página web? Si es así, seguramente buscaste y d...

Herramientas

Generador de Enlaces a Whatsapp