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

Recortar imagen

En esta oportunidad dejo a considerancion un codigo realizado en Java/Netbeans para recortar una imagen visualmente Vide[...]

Crea patrón de desbloqueo para tus aplicaciones en java

El patrón de desbloqueo es una medida de seguridad que tienen algunos teléfonos inteligentes para evitar el acceso al di[...]

Crea tu JLabel con hipervinculo

Si queremos añadir un enlace web a una aplicación en java, podemos hacer uso de botones o etiquetas, incluso se puede añ[...]

¿Como paginar con Laravel 11?

Se utiliza la paginación para poder mostrar al usuario una gran cantidad de datos de una forma ordenada en forma de «pag[...]

Hacker ataca pagina web de «El Diario»

El portal del periodico boliviano «El diario» fue atacado este domingo 25 de septiembre por un Hacker identificado por e[...]

Criba de Eratóstenes animado

Eratóstenes era un matemático griego del siglo  III a.C. el cual ideó una manera rápida de obtener todos los números pri[...]