Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Kotlin / Cifrado por desplazamiento o código de César

Cifrado por desplazamiento o código de César

Por 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

Artículos similares

Gestión de productos – El modelo (Parte 4)

En la estructura del proyecto, nuestro modelo mvc esta compuesto por tres paquetes, la vista, el modelo y controlador. L[...]

Crea tu lector de códigos QR

En este post desarrollaremos una aplicación que nos permitirá leer un código QR y capturar la información que contiene y[...]

jFace – Crea retratos hablados

La policia, el FBI u otros organismos similares utilizaban a dibujantes para realizar el «retrato hablado» de algún male[...]

Proyecto Ascii Art (metodo de Black/white)

El Ascii Art o Arte Ascii, consiste en realizar dibujos con los caracteres ASCII (Código Americano Estándar de Intercamb[...]

VokoscreenNG: aplicación gratuita para grabar videos

VokoscreenNG es una herramienta versátil y de código abierto para la creación de screencasts, disponible para los sistem[...]

CODOTA: Programación Inteligente

La Inteligencia Artificial (AI – Artificial Intelligence) estará presente en casi cada aspecto de nuestra vida en[...]