Ir al contenido principal

4# Criptografía - Cifrado por derivada

__ Indice __


¿Qué es una derivada?

Proceso del cifrado

Código

Github

__ ¿Qué es una derivada? __

La Derivada es un elemento utilizado en la matemática para calcular respuestas de una función a la que se le están alterando sus valores iniciales. La derivada de una función esta representada gráficamente como una línea recta superpuesta sobre cualquier curva (función), el valor de esta pendiente respecto al eje sobre el cual esta siendo estudiada la función recibe el nombre de Derivada.

Formula básica de una derivada  xn - n xn-1

__ Proceso del cifrado __

Bien, el proceso que vamos a utilizar es bastante simple, vamos a utilizar la formula más básica de una derivada para crear nuestro cifrado, si bien, existen formulas mucho más complejas, para iniciar no las necesitamos.

Lo que vamos a hacer, es que a cada letra de una palabra la vamos a pasar a su valor en ASCII, con eso ta podremos hacer nuestro cifrado.

Ejemplo: Hola

Carácter     ASCII
     H              72
      o             111
      l              108
     a               97

Si aplicamos nuestra formula para H sería x72 - 72 x72-1 = 72 x71 y para nuestra cadena completa el resultado sería el siguiente:

72 x71 111 x110 108 x107 97x96


Bastante sencillo ¿no?

__ Código __

Esta vez, haremos el ejemplo con el hermoso lenguaje de programación Java
Creamos nuestro proyecto CifradoDerivada

Agregamos a nuestro proyecto un JFrame con el nombre Principal


No me voy a poner a explicar todo el diseño, para eso hay cursos en Youtube. El diseño nos debería de quedar algo parecido a esto


En el botón de cifrar pondremos el siguiente código

String texto = txtTexto.getText(); Vamos a crear una variable de tipo String, donde guardaremos el texto que el usuario haya puesto en el JTextField al que hemos llamado txtTexto

cifrarTexto cifrar = new cifrarTexto(); Llamamos a nuestra clase cifrarTexto, aun no la hemos creado así que te dará error, pero es normal

String resultado = cifrar.cifrar(texto); Llamamos al método cifrar de nuestra clase (Que aun no hemos creado) y le mandamos el texto que el usuario ha ingresado

txtAreaResult.setText(resultado); Al fianl mandamos el resultado del cifrado al txtArea


Hacemos exactamente lo mismo en nuestro botón descifrar, solamente que llamamos a nuestro método descifrar y le mandamos el texto


Ahora si hay que crear nuestra clase cifrarTexto e importamos la librería StringTokenizer que nos ayudará a separar un String por cada carácter especifico que le mandemos


Vamos a crear nuestro método cifrar, donde pedimos un texto.

char[] cadenaTexto = texto.toCharArray(); Separamos el texto del usuario en un arreglo de tipo char

int asciiValue; esta variable guardará el valor en código ASCII de cada carácter de la palabra

String resultado = ""; Guardará cada letra cifrada, generando nuestra palabra "secreta"

El ciclo for va a recorrer cada indice del arreglo cadenaTexto
asciiValue = (int)cadenaTexto[i]; Convertimos la letra a su equivalente en ASCII 

resultado += asciiValue + "X^" + (asciiVale -1) + "  "; Generamos nuestro cifrado respecto a la formula y lo guardamos en la variable result

return resultado; Retornamos el valor completo de la variable resultado

Ya para terminar con nuestra clase, vamos a crear el método descifrar

StringTokenizer tokens = new StringTokenizer(texto, " "); Creamos nuestra variable de tipo StringTokenizer, que nos ayudará a separa nuestro cifrado por cada espacio que haya.

StringTokenizer letra; Otra variable del mismo tipo, que una vez teniendo la siguiente notación 65X^64 nos ayudará a separar los números por cada X^ que exista

String resulta; Aquí guardaremos ya toda nuestra palabra descifrada

int n; Cuando convirtamos el texto en números, lo guardaremos aquí para poder utilizarlos.

while(tokens.hasMoreTokens()) Ciclo while que se va a repetir hasta que ya no quede ningún token del tipo 65X^64

letra = new StringTokenizer(tokens.nextToken(),"X^"); A nuestro variable letra le pasamos cada token y lo vamos a separa por cada "X^" que encuentre en el texto, esto para dejar a los números por si solos.

n = Integer.parseInt(letra.nextToken()); Convertimos a los números de tipo String que teniamos en la variable letra y los pasamos a tipo entero

resultado += (char)n; Pasamos ese número a su equivalente carácter del alfabeto y lo guardamos en nuestra variable resultado

return resultado; Ya por último retornamos el valor de la variable resultado.


Ya para terminar y que nuestro código funcione, a nuestra función main de la primera clase que creamos en el proyecto, le decimos que nuestro JFrame Principal sea visible al ejecutar el programa.


Y listo !! Vamos a realizar el ejemplo con nuestra palabra clásica R3gularWeb


El resultado que tenemos del cifrado es el siguiente:

82X^81 51X^50 103X^102 117X^116 108X^107 97X^96 114X^113 87X^86 101X^100 98X^97

Hasta el próximo blog

 __ Github __ 

 https://github.com/NeoTRAN001/Crypto/tree/master/CifradoDerivada

Después que tengo flojera

Comentarios

Entradas más populares de este blog

3# Criptografía - Cifrado por sustitución Atbash

__ Indice __ ¿Qué es Atbash? Proceso de cifrado Proceso de descifrar  Código Github ¿Qué es Atbash? Atbash es un método de cifrado para el alfabeto hebreo, por lo tanto entra en la clasificación de           - Cifrado Clásico - se le conoce también como el método espejo, pues consiste en sustituir en la que la primera letra (A) será sustituida por la última (Z), la segunda por la penúltima (B - Y) y así sucesivamente. Proceso de cifrado Vayamos a probarlo, vamos a cifrar nuestra palabra de costumbre RegularWeb: R  =   I E  =  V G  =  T U  =  F L  =  O                  Resultado : IVTFOZIDVY A  =  Z R  =  I W =  D E  =  V B  =  Y Proceso de descifrar  Para descifrar es el mismo procedimiento. R  =   I E  =  V G  =  T U  =  F L  =  O                  Resultado : REGULARWEB A  =  Z R  =  I W =  D E  =  V B  =  Y Código Github   https://github.com/NeoTRAN001/Crypt

2# Criptografía - Polybios

__ Indice __ ¿Qué es Polybios? Proceso de cifrado Proceso de descifrar Código Github __ ¿Qué es Polybios? __ Es un sistema de cifrado en el que se coloca todo el alfabeto en una matriz, y cada letra tiene una posición en la que será convertida.  Es considerado el algoritmo de cifrado más antiguo que se tiene registro •Su nombre se le da por el Historiador griego Polybios • Alrededor del año 150 a. C. __ Proceso de cifrado __ Bien, el proceso de cifrado es bastante fácil, tenemos nuestra matriz bidimensional , si queremos traducir el carácter - ? - nos da como resultado [ 0, 0 ] Y pues, eso es todo... Vayamos a cifrar la palabra Hola H = [4, 9]    o = [1 , 9]    l  = [1, 5]     a = [0, 4]  Resultado: 49191504 __ Proceso de descifrar __  Ahora si queremos el proceso inverso, solamente tenemos, tenemos que mandarle las posiciones y este nos devolverá el carácter [4, 9] = H     [1 , 9] = o    [1, 5] = l    [0

Sockets en C#

__ Índice __ ¿Qué son los sockets en programación? Ejemplo en C# Github __ ¿Qué son los socket en programación? __ Un socket es un método de comunicación entre un programa cliente y un servidor. Entonces podemos decir que los sockets, son el "tunel" de comunicación entre dos aplicaciones. __ Ejemplo en C# __ Servidor  Creamos un nuevo proyecto en consola que será el código del servidor Importamos las librerías necesarias para los sockets Declaramos dos variables, una será la dirección del Server , ya que estamos haciendo todo en nuestra pc la dirección debe de ser la local, localhost o 127.0.0.1 La otra variable será el puerto de conexión, es recomendable seleccionar un puerto alto. Es por eso que las aplicaciones utilizan 8080 . Ahora tenemos que crear un objeto de tipo Socket, que nos pide tres parámetro: 1- Esquema del tipo de diccionario: AddressFamily.InterNetwork dice que utilizará una dirección IP