2. EncriptaciOn de Cadenas
Algunos Procedimiento Visual Basic Para Codificar
y Decodificar Información
Por Harvey Triana
La Encriptación, es un tema de la programación bien
interesante, de hecho se trata de una alta ciencia de
la informática, que pasa por arte, inclusive hoy se
trata de una tecnología. Encriptación es una palabra
rara en español, quizá fea, no obstante se emplea en
documentación técnica.
Buscando en el cajón de los recuerdos, encontré un par
de procedimientos para Codificación / Decodificación
con QuickBasic. Desaforadamente desconozco al
programador de tales procedimientos. Después de
traducir las rutinas para que trabajasen en Visual
Basic me di cuenta que tenían fallas de programación,
sin embargo la documentación del código me llevo a
captar la idea del autor y ponerla a funcionar
perfectamente. Tales procedimientos se exponen en
este documento.
Algo de Teoría
Recuerdo que alguien comentaba que codificar era muy
sencillo, simplemente cambias unas letras por otras, y
2
3. el receptor del mensaje conoce este secreto. También,
aumentar o disminuir un número discreto a los códigos
ASCII, suele ser otra sugerencia. Estas estrategias
pasan a ser infantiles tratamientos del problema, y no
presentan problema alguno para un decodificador
experto y malo.
La encriptación se hace a través de la aplicación de
cierto tratamiento a los códigos ASCII de los
mensajes, de manera que el tratamiento inverso será
el único camino práctico para decodificar el mensaje.
¿Cómo se mantiene indescifrable una cadena
codificada?. Se trata de combinar la clave de
encriptación con el mensaje de manera que las
probabilidades de decodificar el mensaje, sin conocer
la clave, sean virtualmente ínfimas, es decir, el tan
prolongado el trabajo de desciframiento que no
existen esperanzas próximas. Por ejemplo cuando un
cristal ornamental se rompe violentamente, es casi
imposible volver a juntar las piezas para obtener la
pieza original.
Como una cita teórica, uno de los algoritmos de
codificación se basa en la función números primos. Por
ejemplo resulta fácil multiplicar dos números primos,
sean a = 11927 y b = 20903, de manera que a • b = c =
249310081. Pero resulta muy difícil determinar a y b a
partir de c. Matemáticamente esto se hace a través
del procedimiento conocido como Descomposición
Factorial. En el ejemplo c viene a ser la codificación,
mientras a y b son la clave de decodificación. Esta
estrategia es la base de un ingenioso y sofisticado
sistema de encriptación llamado Criptosistema RSA
(en honor a sus autores). de hecho este es el mejor
3
4. sistema de encriptación y es posible que sea aplicado
en las comunicaciones masivas de Internet en un
futuro. Siguiendo con mí ejemplo, en un caso real, se
trata de cifras de alrededor de 250 dígitos, lo cual
teóricamente requiere de millones de años para
descomponer factorialmente. Una anécdota citada en
el libro Camino al Futuro (2ª edición) de Mr. Gates,
cuenta que un reto público de descifrar una clave de
129 dígitos fue superado al coordinar un trabajo de
varias computadoras e Internet, para finalmente
lograr la respuesta en menos de un año. En el reto los
autores predecían que su mensaje jamás sería
desvelado. El libro mencionado hace una exposición
más detallada de este tema. Por supuesto, este
articulo no llegará tan lejos.
Dos Procedimientos de Encriptación
La Encriptación tiene dos elementos: Un mensaje, y
una clave privada de acceso entre el emisor y el
receptor, con la cual se puede descifrar el mensaje. El
procedimiento de encriptación produce un mensaje o
archivo cifrado. Presento dos procedimientos escritos
en Visual Basic, catalogados como verdaderas maneras
de encriptación.
Modelo EncryptionString
EncryptionString, es un clásico sistema el cual toma el
mensaje y una clave del usuario, y a través de una
combinación de estos dos parámetros se produce una
cadena codificada. Mantengo la explicación original del
método:
Texto a codificar: ENCRYPTION
4