SlideShare una empresa de Scribd logo
2
Lo más leído
3
Lo más leído
4
Lo más leído
Algoritmos básicos para cifrado y descifrado de frases
Encriptar y Desencriptar
Transposición Inversa
El Algoritmo Transposición inversa es el más sencillo de todos,
genera una cadena al revés de cómo fue escrita: es decir, si
escribimos la palabra PANDA el algoritmo debe regresar ADNAP
como cadena cifrada.
La forma de descifrarlo es aplicando el mismo método a la cadena
cifrada, por lo que requiere la creación de un solo método de
programación.
Ejemplo de una función que cifra en Transposición Inversa en C#
private string cifra_inversa(string cadena)
{
string inversa = "";
for (int i = cadena.Length - 1; i >= 0; i--)
{
inversa = inversa + (cadena[i]);
}
return inversa;
}
Transposición Binaria
La Transposición Binaria al igual que la inversa mueve de su
lugar los caracteres de la cadena original, la diferencia radica
en que lo hace en pares de caracteres sin tomar en cuenta los
demás caracteres de la cadena.
Por ejemplo si tecleamos la palabra MEXICO el algoritmo
divide la frase en pares de la siguiente forma: ME|XI|CO, e
intercambia el contenido de cada par, el carácter de la
izquierda lo pone a la derecha y viceversa, al final regresa
EMIXOC como frase cifrada.
La forma de descifrarlo es aplicando de nuevo el mismo
algoritmo por lo que solo requiere crear una rutina en código
de programación
Ejemplo de una función que cifra en Transposición Binaria en C#
private string cifra_binaria(string cadena)
{
string binaria = "";
int i = 0;
while (i < cadena.Length)
{
if ((i + 1) < cadena.Length)
{
binaria = binaria + cadena[i + 1].ToString() +
cadena[i].ToString();
}
else
{
binaria = binaria + cadena[cadena.Length - 1].ToString();
}
i = i + 2;
}
return binaria;
}
Algoritmo Incremental
El Algoritmo Incremental requiere una clave pública entera.
Genera una nueva cadena cifrada sumando carácter por
carácter la cantidad capturada en laclavepública al código ASCII
de la cadena original.
La forma de invertirlo es restando la clave pública, por lo que es
posible que requiera dos métodos para hacer la tarea, uno para
cifrar y otro para descifrar.
Ejemplo de las funciones que cifran y descifran frases con el algoritmo incremental en C#:
private string cifra_incrementa(string cadena, int cPub)
{
char remplaza;
string re_incrementa = "";
for (int i = 0; i < cadena.Length; i++)
{
remplaza = (char)((int)cadena[i] + cPub);
re_incrementa = re_incrementa + remplaza.ToString();
}
return re_incrementa;
}
private string des_incrementa(string cadena, int cPub)
{
char remplaza;
string re_incrementa = "";
for (int i = 0; i < cadena.Length; i++)
{
remplaza = (char)((int)cadena[i] - cPub);
re_incrementa = re_incrementa + remplaza.ToString();
}
return re_incrementa;
}
Algoritmo Exponencial
El Algoritmo Exponencial tiene mucha similitud con el
Algoritmo Incremental, en este caso se pide dos claves
numéricas, la clave pública y la clave privada, las cuales son
multiplicadas entre sí, una vez que tenemos el resultado
dicho número entero se utiliza para sumarlo al código ASCII
de cada carácter de la frase que vamos a cifrar, con esto
obtenemos al final una nueva frase ya cifrada.
La forma de descifrarlo es restando el número que
obtuvimos de la multiplicación de las claves, por lo que es
posible que se requieran dos métodos de programación,
uno para cifrar y otro para descifrar la frase.
En este caso las funciones son exactamente las mismas que
en el algoritmo incremental, el único cambio es que al
capturar las dos claves estas se envían ya multiplicadas en el parámetro numérico de cada
función, de esta forma el código es reutilizable.
Ejemplo de funciones donde se usa el algoritmo exponencial en C#:
// llamado a las funciones enviando las claves y amultiplicadas
string cifrado = cifra_incrementa(texto.Text, cPub * cPriv);
string descifrado = des_incrementa(cifrado, cPub * cPriv);
// Se utilizan las mismas funciones que para el algoritmo incremental
private string cifra_incrementa(string cadena, int cPub)
{
char remplaza;
string re_incrementa = "";
for (int i = 0; i < cadena.Length; i++)
{
remplaza = (char)((int)cadena[i] + cPub);
re_incrementa = re_incrementa + remplaza.ToString();
}
return re_incrementa;
}
private string des_incrementa(string cadena, int cPub)
{
char remplaza;
string re_incrementa = "";
for (int i = 0; i < cadena.Length; i++)
{
remplaza = (char)((int)cadena[i] - cPub);
re_incrementa = re_incrementa + remplaza.ToString();
}
return re_incrementa;
}
Algoritmo Exponencial Diferido
El algoritmo Exponencial Diferido funciona muy similar al
Exponencial con la diferencia que las claves enteras no se
multiplican al inicio, la clave privada sirve para referenciar
un arreglo en memoria, elcual contiene números enteros en
un rango de 1 a 99 (puede seleccionarse otro rango).
El usuario en la clave privada debe seleccionar un número
entero que se refiere a la posición en el arreglo de la cual
extraemos el número que usaremos para multiplicar con la
clave pública, una vez que obtenemos el resultado el resto
es exactamente igual al algoritmo exponencial.
En este caso, antes de llamar las funciones debemos buscar
en el arreglo el valor correspondiente a la posición enviada
en la clave privada. Para este ejemplo el arreglo es de 20
posiciones.
Ejemplo de funciones donde se usa el algoritmo exponencial diferido en C#:
byte[] diferido = new byte[20] {3, 5, 6, 8, 9, 11, 12, 14, 15, 17,
19, 21, 25, 27, 31, 35, 58, 46, 55, 59};
clave = diferido[cPriv - 1];
string cifrado = cifra_incrementa(texto.Text, cPub * clave);
string descifrado = des_incrementa(cifrado, cPub * clave);
// Llamado a las funciones enviando las claves ya multiplicadas
// Se utilizan las mismas funciones que para el algoritmo incremental
private string cifra_incrementa(string cadena, int cPub)
{
char remplaza;
string re_incrementa = "";
for (int i = 0; i < cadena.Length; i++)
{
remplaza = (char)((int)cadena[i] + cPub);
re_incrementa = re_incrementa + remplaza.ToString();
}
return re_incrementa;
}
private string des_incrementa(string cadena, int cPub)
{
char remplaza;
string re_incrementa = "";
for (int i = 0; i < cadena.Length; i++)
{
remplaza = (char)((int)cadena[i] - cPub);
re_incrementa = re_incrementa + remplaza.ToString();
}
return re_incrementa;
}
Algoritmos Mixtos
Es posible crear algoritmos mixtos combinando dos o más de los
mencionados anteriormente, por lo que el código fuente requiere
tantos métodos sean necesarios para cifrar y descifrar.
Es recomendable que al combinar dos o más algoritmos para
cifrar frases primero apliquemos el más sencillo y después sobre
la frase resultante aplicamos el de mayor complejidad.
Para descifrar por medio de algoritmos mixtos solo debemos
aplicar los algoritmos en orden inverso a como se usaron en el
cifrado.
Notas: Es necesario ser prudente al momento de seleccionar los
números enteros que utilizaremos para las multiplicaciones ya
que de ser números muy grandes el resultado será un valor
demasiado alto que puede ocasionar problemas de
procesamiento, lo cual no está contemplado en el código de ejemplo mostrado en cada
algoritmo.
-----------------
Mtro. José Antonio Sandoval Acosta.
Docente de Ingeniería en Sistemas Computacionales.
México. 18 de marzo de 2017.

Más contenido relacionado

PDF
Alice3
PPTX
Estructuras de control en Visual Basic
PDF
6 Curso de POO en Java - clases y objetos
PPT
Ejercicios
PPT
RED NEURONAL Backpropagation
PDF
Ejercicios resueltos de java
PDF
Analisis Algoritmo
PPTX
curso Pseint 1 (16 ejercicios basicos)
Alice3
Estructuras de control en Visual Basic
6 Curso de POO en Java - clases y objetos
Ejercicios
RED NEURONAL Backpropagation
Ejercicios resueltos de java
Analisis Algoritmo
curso Pseint 1 (16 ejercicios basicos)

La actualidad más candente (20)

PDF
Alfabeto, Cadenas, Lenguajes, y Problemas
PPS
PPTX
fundamentos teoricos ingenieria de softwaare
 
PPT
instruccion de control
PDF
PPTX
Algoritmos Paralelos
DOCX
Investigacion errores lexicos
DOCX
Ensayo de php
PPTX
Programación estructurada y Herramientas estructurada
DOCX
Ejemplo de uno a uno
PDF
Alice 12
PDF
Ejercicios resueltos con Python
PDF
Alfabetos-Lenguajes y Automatas 1
PPT
Pilas En C++
DOCX
Dominios en Base de Datos
PDF
Alice 8
PDF
Sesion12-componentes Visuales java
PPTX
Manual de Uso PseInt
PPTX
EJERCICIOS DE ALGORITMOS
PPTX
Lenguajes Decidibles
Alfabeto, Cadenas, Lenguajes, y Problemas
fundamentos teoricos ingenieria de softwaare
 
instruccion de control
Algoritmos Paralelos
Investigacion errores lexicos
Ensayo de php
Programación estructurada y Herramientas estructurada
Ejemplo de uno a uno
Alice 12
Ejercicios resueltos con Python
Alfabetos-Lenguajes y Automatas 1
Pilas En C++
Dominios en Base de Datos
Alice 8
Sesion12-componentes Visuales java
Manual de Uso PseInt
EJERCICIOS DE ALGORITMOS
Lenguajes Decidibles
Publicidad

Destacado (20)

DOCX
Simulacion - Algoritmo congruencial cuadratico
DOCX
Tema 4.3.1. Actividad 2: Instrumentos de Evaluación
PPTX
Estructura de Datos - Estructuras no lineales
PPTX
Tópicos Avanzados de Programación - Unidad 5 Programacion movil
DOCX
Simulación - Algoritmo de productos medios
DOCX
M2 actividad 2.3 INSTRUMENTACIÓN DIDÁCTICA 2015
PPTX
Mercadotecnia Electronica - Tecnologias de integracion
PPTX
Como hacer un Mapa Mental
DOCX
M4 4.3 Actividad 1. Tabla comparativa de instrumentos de evaluacion
PPTX
M4 4.2 actividad 2 Presentación Asertum - Hexágono de evaluación
DOCX
Simulación - Algoritmo lineal
DOCX
00001 b 1 ing.sistemas f j 2014 mata ito-ac-po-004-08 formato int didact...
DOCX
10 ejercicios resueltos en cpp
PDF
Unidad 2. planeación de un ambiente de aprendizaje
PPTX
Planificación sobre la reflexión de la luz
PPTX
Programación Orientada a Objetos - Unidad 5 Excepciones
DOCX
M4 actividad 4.4.1 INTEGRACIÓN DE LOS INSTRUMENTOS DE EVALUACIÓN AL PROYECTO ...
PDF
DOC
Cuestionario acerca de metodologías ágiles de desarrollo de software
DOCX
Planificación de clases fibra optica curricula
Simulacion - Algoritmo congruencial cuadratico
Tema 4.3.1. Actividad 2: Instrumentos de Evaluación
Estructura de Datos - Estructuras no lineales
Tópicos Avanzados de Programación - Unidad 5 Programacion movil
Simulación - Algoritmo de productos medios
M2 actividad 2.3 INSTRUMENTACIÓN DIDÁCTICA 2015
Mercadotecnia Electronica - Tecnologias de integracion
Como hacer un Mapa Mental
M4 4.3 Actividad 1. Tabla comparativa de instrumentos de evaluacion
M4 4.2 actividad 2 Presentación Asertum - Hexágono de evaluación
Simulación - Algoritmo lineal
00001 b 1 ing.sistemas f j 2014 mata ito-ac-po-004-08 formato int didact...
10 ejercicios resueltos en cpp
Unidad 2. planeación de un ambiente de aprendizaje
Planificación sobre la reflexión de la luz
Programación Orientada a Objetos - Unidad 5 Excepciones
M4 actividad 4.4.1 INTEGRACIÓN DE LOS INSTRUMENTOS DE EVALUACIÓN AL PROYECTO ...
Cuestionario acerca de metodologías ágiles de desarrollo de software
Planificación de clases fibra optica curricula
Publicidad

Similar a Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar) (20)

PDF
08 strings o cadenas
PPT
!Prograc8
PDF
Tap u2-componentes y librerias-programa para cifrar y descifrar cadenas
DOCX
Guia De Practica 3
PPTX
Funciones str
PDF
Sobrecarga de operadores
PPT
Grafos
PPT
Grafos
PPT
Grafos
PDF
Guia final so
PPSX
if-while-for.ppsx
PDF
Algoritmos y lenjuage de programacion
DOCX
DOCX
Fundamentos de programación librería string C++
PDF
Funciones C++
PDF
Ejercicios programacion cortos
PPT
Cadenas y punteros.ppt
DOCX
Trabajo programacion 1 jose silva
PPTX
Comandos importantes en c++
PPTX
Módulo 4 (sin estilo)
08 strings o cadenas
!Prograc8
Tap u2-componentes y librerias-programa para cifrar y descifrar cadenas
Guia De Practica 3
Funciones str
Sobrecarga de operadores
Grafos
Grafos
Grafos
Guia final so
if-while-for.ppsx
Algoritmos y lenjuage de programacion
Fundamentos de programación librería string C++
Funciones C++
Ejercicios programacion cortos
Cadenas y punteros.ppt
Trabajo programacion 1 jose silva
Comandos importantes en c++
Módulo 4 (sin estilo)

Más de José Antonio Sandoval Acosta (20)

PPTX
Diapositivas Mejora SIG del Instituto Tecnológico Superior de Guasav
PPTX
Gestión de la Calidad Total (UNIDAD 2) UAIM
PPTX
Taller de ética U1 El sentido de aprender sobre etica.pptx
PPTX
Comunidad Tepeca - Proyecto Final UAIM-Los Mochis
PPTX
Linea del tiempo de la inteligencia artificial.pptx
PPTX
Ing. Mecatronica Prog. Básica, U5 Módulos
PPTX
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
PPTX
Ing. Mecatrónica, Prog. Básica U3 control de flujo
PPTX
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
PPTX
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
PDF
Manual de prácticas y antología para POO
PPTX
Aplicaciones móviles intro.
PPTX
Plantilla presentación.pptx
PPTX
PPTX
Diagrama de Casos de Uso UML
PPTX
Introducción al Diagrama de Clases UML
PPTX
Diagrama de clases UML
PPTX
Diagrama UML Casos de Uso
PDF
Tema 3 - Comandos básicos.pdf
PDF
Tema 1 - Intro.pdf
Diapositivas Mejora SIG del Instituto Tecnológico Superior de Guasav
Gestión de la Calidad Total (UNIDAD 2) UAIM
Taller de ética U1 El sentido de aprender sobre etica.pptx
Comunidad Tepeca - Proyecto Final UAIM-Los Mochis
Linea del tiempo de la inteligencia artificial.pptx
Ing. Mecatronica Prog. Básica, U5 Módulos
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatrónica, Prog. Básica U3 control de flujo
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
Manual de prácticas y antología para POO
Aplicaciones móviles intro.
Plantilla presentación.pptx
Diagrama de Casos de Uso UML
Introducción al Diagrama de Clases UML
Diagrama de clases UML
Diagrama UML Casos de Uso
Tema 3 - Comandos básicos.pdf
Tema 1 - Intro.pdf

Último (20)

PPTX
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
PPT
357161027-seguridad-industrial-diapositivas-ppt.ppt
PDF
Pensamiento Politico Siglo XXI Peru y Mundo.pdf
PPTX
Introduccion quimica del fuego.ffffffffffpptx
PPTX
376060032-Diapositivas-de-Ingenieria-ESTRUCTURAL.pptx
PPTX
A8B08CED-D3D9-415C-B4A3-2A6CA6409A48.1.1Presentación Dirección 2022 unidade...
PDF
SISTEMAS DE PUESTA A TIERRA: Una introducción a los fundamentos de los sistem...
PPTX
Presentacion ppt rx en soldadura tp 231 vladimir Osuna 7114958 20241.pptx
PDF
S15 Protección de redes electricas 2025-1_removed.pdf
PPTX
MANEJO DE QUIMICOS Y SGA GRUPO Mnsr Aleman.pptx
PPTX
Riesgo eléctrico 5 REGLAS DE ORO PARA TRABAJOS CON TENSION
PPTX
Software para la educación instituciones superiores
PDF
Matriz_Seguimiento_Estu_Consult_2024_ACT.pdf
DOCX
Cumplimiento normativo y realidad laboral
PDF
Repaso sobre el Gusano_cogollero y como ataca .pdf
DOC
informacion acerca de la crianza tecnificada de cerdos
PPTX
Manual ISO9001_2015_IATF_16949_2016.pptx
PDF
UD3 -Producción, distribución del aire MA.pdf
PDF
LIBRO UNIVERSITARIO INTELIGENCIA ALGORITMICA BN.pdf
PPTX
CNE-Tx-ZyD_Comite_2020-12-02-Consolidado-Version-Final.pptx
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
357161027-seguridad-industrial-diapositivas-ppt.ppt
Pensamiento Politico Siglo XXI Peru y Mundo.pdf
Introduccion quimica del fuego.ffffffffffpptx
376060032-Diapositivas-de-Ingenieria-ESTRUCTURAL.pptx
A8B08CED-D3D9-415C-B4A3-2A6CA6409A48.1.1Presentación Dirección 2022 unidade...
SISTEMAS DE PUESTA A TIERRA: Una introducción a los fundamentos de los sistem...
Presentacion ppt rx en soldadura tp 231 vladimir Osuna 7114958 20241.pptx
S15 Protección de redes electricas 2025-1_removed.pdf
MANEJO DE QUIMICOS Y SGA GRUPO Mnsr Aleman.pptx
Riesgo eléctrico 5 REGLAS DE ORO PARA TRABAJOS CON TENSION
Software para la educación instituciones superiores
Matriz_Seguimiento_Estu_Consult_2024_ACT.pdf
Cumplimiento normativo y realidad laboral
Repaso sobre el Gusano_cogollero y como ataca .pdf
informacion acerca de la crianza tecnificada de cerdos
Manual ISO9001_2015_IATF_16949_2016.pptx
UD3 -Producción, distribución del aire MA.pdf
LIBRO UNIVERSITARIO INTELIGENCIA ALGORITMICA BN.pdf
CNE-Tx-ZyD_Comite_2020-12-02-Consolidado-Version-Final.pptx

Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)

  • 1. Algoritmos básicos para cifrado y descifrado de frases Encriptar y Desencriptar Transposición Inversa El Algoritmo Transposición inversa es el más sencillo de todos, genera una cadena al revés de cómo fue escrita: es decir, si escribimos la palabra PANDA el algoritmo debe regresar ADNAP como cadena cifrada. La forma de descifrarlo es aplicando el mismo método a la cadena cifrada, por lo que requiere la creación de un solo método de programación. Ejemplo de una función que cifra en Transposición Inversa en C# private string cifra_inversa(string cadena) { string inversa = ""; for (int i = cadena.Length - 1; i >= 0; i--) { inversa = inversa + (cadena[i]); } return inversa; }
  • 2. Transposición Binaria La Transposición Binaria al igual que la inversa mueve de su lugar los caracteres de la cadena original, la diferencia radica en que lo hace en pares de caracteres sin tomar en cuenta los demás caracteres de la cadena. Por ejemplo si tecleamos la palabra MEXICO el algoritmo divide la frase en pares de la siguiente forma: ME|XI|CO, e intercambia el contenido de cada par, el carácter de la izquierda lo pone a la derecha y viceversa, al final regresa EMIXOC como frase cifrada. La forma de descifrarlo es aplicando de nuevo el mismo algoritmo por lo que solo requiere crear una rutina en código de programación Ejemplo de una función que cifra en Transposición Binaria en C# private string cifra_binaria(string cadena) { string binaria = ""; int i = 0; while (i < cadena.Length) { if ((i + 1) < cadena.Length) { binaria = binaria + cadena[i + 1].ToString() + cadena[i].ToString(); } else { binaria = binaria + cadena[cadena.Length - 1].ToString(); } i = i + 2; } return binaria; }
  • 3. Algoritmo Incremental El Algoritmo Incremental requiere una clave pública entera. Genera una nueva cadena cifrada sumando carácter por carácter la cantidad capturada en laclavepública al código ASCII de la cadena original. La forma de invertirlo es restando la clave pública, por lo que es posible que requiera dos métodos para hacer la tarea, uno para cifrar y otro para descifrar. Ejemplo de las funciones que cifran y descifran frases con el algoritmo incremental en C#: private string cifra_incrementa(string cadena, int cPub) { char remplaza; string re_incrementa = ""; for (int i = 0; i < cadena.Length; i++) { remplaza = (char)((int)cadena[i] + cPub); re_incrementa = re_incrementa + remplaza.ToString(); } return re_incrementa; } private string des_incrementa(string cadena, int cPub) { char remplaza; string re_incrementa = ""; for (int i = 0; i < cadena.Length; i++) { remplaza = (char)((int)cadena[i] - cPub); re_incrementa = re_incrementa + remplaza.ToString(); } return re_incrementa; }
  • 4. Algoritmo Exponencial El Algoritmo Exponencial tiene mucha similitud con el Algoritmo Incremental, en este caso se pide dos claves numéricas, la clave pública y la clave privada, las cuales son multiplicadas entre sí, una vez que tenemos el resultado dicho número entero se utiliza para sumarlo al código ASCII de cada carácter de la frase que vamos a cifrar, con esto obtenemos al final una nueva frase ya cifrada. La forma de descifrarlo es restando el número que obtuvimos de la multiplicación de las claves, por lo que es posible que se requieran dos métodos de programación, uno para cifrar y otro para descifrar la frase. En este caso las funciones son exactamente las mismas que en el algoritmo incremental, el único cambio es que al capturar las dos claves estas se envían ya multiplicadas en el parámetro numérico de cada función, de esta forma el código es reutilizable. Ejemplo de funciones donde se usa el algoritmo exponencial en C#: // llamado a las funciones enviando las claves y amultiplicadas string cifrado = cifra_incrementa(texto.Text, cPub * cPriv); string descifrado = des_incrementa(cifrado, cPub * cPriv); // Se utilizan las mismas funciones que para el algoritmo incremental private string cifra_incrementa(string cadena, int cPub) { char remplaza; string re_incrementa = ""; for (int i = 0; i < cadena.Length; i++) { remplaza = (char)((int)cadena[i] + cPub); re_incrementa = re_incrementa + remplaza.ToString(); } return re_incrementa; } private string des_incrementa(string cadena, int cPub) { char remplaza; string re_incrementa = ""; for (int i = 0; i < cadena.Length; i++) { remplaza = (char)((int)cadena[i] - cPub); re_incrementa = re_incrementa + remplaza.ToString(); } return re_incrementa; }
  • 5. Algoritmo Exponencial Diferido El algoritmo Exponencial Diferido funciona muy similar al Exponencial con la diferencia que las claves enteras no se multiplican al inicio, la clave privada sirve para referenciar un arreglo en memoria, elcual contiene números enteros en un rango de 1 a 99 (puede seleccionarse otro rango). El usuario en la clave privada debe seleccionar un número entero que se refiere a la posición en el arreglo de la cual extraemos el número que usaremos para multiplicar con la clave pública, una vez que obtenemos el resultado el resto es exactamente igual al algoritmo exponencial. En este caso, antes de llamar las funciones debemos buscar en el arreglo el valor correspondiente a la posición enviada en la clave privada. Para este ejemplo el arreglo es de 20 posiciones. Ejemplo de funciones donde se usa el algoritmo exponencial diferido en C#: byte[] diferido = new byte[20] {3, 5, 6, 8, 9, 11, 12, 14, 15, 17, 19, 21, 25, 27, 31, 35, 58, 46, 55, 59}; clave = diferido[cPriv - 1]; string cifrado = cifra_incrementa(texto.Text, cPub * clave); string descifrado = des_incrementa(cifrado, cPub * clave); // Llamado a las funciones enviando las claves ya multiplicadas // Se utilizan las mismas funciones que para el algoritmo incremental private string cifra_incrementa(string cadena, int cPub) { char remplaza; string re_incrementa = ""; for (int i = 0; i < cadena.Length; i++) { remplaza = (char)((int)cadena[i] + cPub); re_incrementa = re_incrementa + remplaza.ToString(); } return re_incrementa; } private string des_incrementa(string cadena, int cPub) { char remplaza; string re_incrementa = ""; for (int i = 0; i < cadena.Length; i++) { remplaza = (char)((int)cadena[i] - cPub); re_incrementa = re_incrementa + remplaza.ToString(); } return re_incrementa; }
  • 6. Algoritmos Mixtos Es posible crear algoritmos mixtos combinando dos o más de los mencionados anteriormente, por lo que el código fuente requiere tantos métodos sean necesarios para cifrar y descifrar. Es recomendable que al combinar dos o más algoritmos para cifrar frases primero apliquemos el más sencillo y después sobre la frase resultante aplicamos el de mayor complejidad. Para descifrar por medio de algoritmos mixtos solo debemos aplicar los algoritmos en orden inverso a como se usaron en el cifrado. Notas: Es necesario ser prudente al momento de seleccionar los números enteros que utilizaremos para las multiplicaciones ya que de ser números muy grandes el resultado será un valor demasiado alto que puede ocasionar problemas de procesamiento, lo cual no está contemplado en el código de ejemplo mostrado en cada algoritmo. ----------------- Mtro. José Antonio Sandoval Acosta. Docente de Ingeniería en Sistemas Computacionales. México. 18 de marzo de 2017.