Ir al contenido principal

Cifrado Ivuis


__ Indice __


¿Qué es Ivuis?

Proceso de Cifrado

Llave
Proceso de Descifrar

Github

Sin nombre.png

__ ¿Qué es Ivuis? __

Ivuis es un cifrado creado por el Team WASP que esta inspirado en los métodos por llave pública, entra en la clasificación de simétrico, la finalidad del proyecto es entender y aportar en el mundo de la criptografía.


__ Proceso de Cifrado __

Ivuis tiene un alfabeto interno el cuál nosotros podemos definir, para hacer hacer la explicación básica supongamos que tenemos de la - a - hasta la - z -, a cada letra se le asignará un número aleatorio con un rango de 0 hasta la longitud total de nuestra cadena, en este caso es 25 :

 ["a"] = 5;      ["b"] = 8;      ["c"] = 0;       ["d"] = 6;     ["e"] = 13;    ["f"] = 17;

 ["g"] = 18;     ["h"] = 9;    ["i"] = 21;     ["j"] = 10;    ["k"] = 14;    ["l"] = 16;

["m"] = 24;     ["n"] = 7;    ["o"] = 22;   ["p"] = 4;     ["q"] = 23;    ["r"] = 20;

    ["s"] = 3;     ["t"] = 11;    ["u"] = 15;    ["v"] = 12;     ["w"] = 2;    ["x"] = 19;
  
["y"] = 25;     ["z"] = 1;

A continuación se le suma un número dado por el usuario, lo que será nuestra Number Key vamos a darle el número 100. Así que tendríamos el siguiente modelo matemático:

 alfabeto[Indice] + NumberKey


 ["a"] = 105;    ["b"] = 108;     ["c"] = 100;   ["d"] = 106;     ["e"] = 113;    ["f"] = 117;

 ["g"] = 118;     ["h"] = 109;    ["i"] = 121;     ["j"] = 110;    ["k"] = 114;    ["l"] = 116;

["m"] = 124;     ["n"] = 107;    ["o"] = 122;   ["p"] = 104;     ["q"] = 123;    ["r"] = 120;

    ["s"] = 103;     ["t"] = 111;    ["u"] = 115;    ["v"] = 112;     ["w"] = 102;    ["x"] = 119;
  
["y"]= 125;     ["z"]= 101;
El otro parámetro que tenemos es Numerican Base este nos dirá en que base se encontrará nuestro cifrado, ya sea en binario, decimal, hexadecimal, etc etc. En este ejemplo lo vamos a poner en base Hexadecimal, así que será 16. Entonces nos queda lo siguiente:

 CambiarBase( alfabeto[Indice] + NumberKey NumericanBase)

 ["a"] = 69;    ["b"] = 6c;     ["c"] = 64;   ["d"] = 6a;     ["e"] = 71;    ["f"] = 75;

 ["g"] = 76;     ["h"] = 6d;    ["i"] = 79;     ["j"] = 6e;    ["k"] = 72;    ["l"] = 116;

["m"] = 74;     ["n"] = 107;    ["o"] = 6b;   ["p"] = 68;     ["q"] = 7b;    ["r"] = 78;

    ["s"] = 67;     ["t"] = 6f;    ["u"] = 73;    ["v"] = 70;     ["w"] = 66;    ["x"] = 77;
  
["y"]= 7d;     ["z"]= 65;

Cuidado aquí, recordemos que estos números están en base hexadecimal, así que aunque vemos que z = 65, ese 65 no es el número que nosotros conocemos. 65 es el equivalente en hexadecimal al 101 del sistema Decimal  (El de toda la vida). 

Ya el último paso es pasar cada número a su equivalente a carácter, podemos guiarnos de la tabla del código ASCII:

 ["a"] = "i";    ["b"] = "l";     ["c"] = "d";   ["d"] = "j";     ["e"] = "q";    ["f"] = "u";

 ["g"] = "v";     ["h"] = "m";    ["i"] = "Y";     ["j"] = "n";    ["k"] = "r";    ["l"] = "t";

["m"] = "|";     ["n"] = "k";    ["o"] = "z";   ["p"] = "h";     ["q"] = "{";    ["r"] = "x";

    ["s"] = "g";     ["t"] = "o";    ["u"] = "s";    ["v"] = "p";     ["w"] = "f";    ["x"] = "w";
  
["y"]= "}";     ["z"]= "e";


Al ingresar un texto de ejemplo (hola) obtendremos: mzti
Y cada que ejecutemos el programa, todo nuestro abecedario tendrá nuevamente valores aleatorios.


__ Llave __

Ya que cada letra de nuestro abecedario tendrá un valor aleatorio siempre, necesitamos tener una llave única para cada ocasión. Para eso tenemos que juntar todos sus valores en orden, para complicar un poco las cosas la llave será en la base numérica que ha dado el usuario.

69 6c 64 6a 71 75 76 6d 79 6e 72 116 74 107 6b 68 7b 78 67 6f 73 70 66 77 7d 65

Esta será nuestra llave, nos dice que valor tiene cada letra de nuestro abecedario.

__ Descifrar __

69 6c 64 6a 71 75 76 6d 79 6e 72 116 74 107 6b 68 7b 78 67 6f 73 70 66 77 7d 65 
a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z

Ya una vez que tenemos nuestra llave, sabemos que está ordenada respecto a nuestro abecedario así que solamente tenemos que asignarle a cada letra su valor nuevamente, quedando de esta forma:

["a"] = 69;    ["b"] = 6c;     ["c"] = 64;   ["d"] = 6a;     ["e"] = 71;    ["f"] = 75;

 ["g"] = 76;     ["h"] = 6d;    ["i"] = 79;     ["j"] = 6e;    ["k"] = 72;    ["l"] = 116;

["m"] = 74;     ["n"] = 107;    ["o"] = 6b;   ["p"] = 68;     ["q"] = 7b;    ["r"] = 78;

    ["s"] = 67;     ["t"] = 6f;    ["u"] = 73;    ["v"] = 70;     ["w"] = 66;    ["x"] = 77;
  
["y"]= 7d;     ["z"]= 65;

Ingresamos mensaje - mzti - lo convertimos a su código ASCII y luego a la base numérica que el usuario ingreso  (En este caso hexadecimal) - 6d6b6f6e - y comparamos con nuestra matriz y con ello obtener su letra, dándonos como resultado - hola -

__ Github __

https://github.com/NeoTRAN001/ProyectoIvuis


Nota del Autor: El cifrado Ivuis tiene aun otros pasos para dificultar más la legibilidad del texto y la llave, como agregar información basura. Pero la explicación es para entender en esencia lo que hace.

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