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 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.
2
3. 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 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.
3
5. La ventaja de esta técnica es que es muy flexible de usar
e intuitiva. Sin tener la máxima seguridad, es muy
segura. Escribir un programa para encriptar archivos
resulta bastante simple por aquello de la contraseña. No
ocurre lo mismo con el siguiente procedimiento: ChrTran.
El código de EncryptionString es el siguiente:
DefInt A-Z
Option Explicit
'//For Action parameter in EncryptString
Public Const ENCRYPT = 1, DECRYPT = 2
'---------------------------------------------------------------------
' EncryptString
' Modificado por Harvey T.
'---------------------------------------------------------------------
Public Function EncryptString( _
UserKey As String, Text As String, Action As Single _
) As String
Dim UserKeyX As String
Dim Temp As Integer
Dim Times As Integer
Dim i As Integer
Dim j As Integer
Dim n As Integer
Dim rtn As String
'//Get UserKey characters
n = Len(UserKey)
ReDim UserKeyASCIIS(1 To n)
For i = 1 To n
UserKeyASCIIS(i) = Asc(Mid$(UserKey, i, 1))
Next
'//Get Text characters
ReDim TextASCIIS(Len(Text)) As Integer
For i = 1 To Len(Text)
TextASCIIS(i) = Asc(Mid$(Text, i, 1))
Next
5
6. '//Encryption/Decryption
If Action = ENCRYPT Then
For i = 1 To Len(Text)
j = IIf(j + 1 >= n, 1, j + 1)
Temp = TextASCIIS(i) + UserKeyASCIIS(j)
If Temp > 255 Then
Temp = Temp - 255
End If
rtn = rtn + Chr$(Temp)
Next
ElseIf Action = DECRYPT Then
For i = 1 To Len(Text)
j = IIf(j + 1 >= n, 1, j + 1)
Temp = TextASCIIS(i) - UserKeyASCIIS(j)
If Temp < 0 Then
Temp = Temp + 255
End If
rtn = rtn + Chr$(Temp)
Next
End If
'//Return
EncryptString = rtn
End Function
Plan de marketing
de la División de cine
La mejor oportunidad para ser líderes
en la industria cinematográfica
Cómo usar esta plantilla de informe
Cambie la información de la portada para que
corresponda a su informe. Para el cuerpo del
informe, utilice estilos como los de Título 1 a 5, Texto
independiente, Cita, Lista con viñetas y Lista con
números en la lista Estilo de la barra de
herramientas Formato.
Esta plantilla de informe se complementa con estilos
para crear una tabla de contenido y un índice. En el
menú Insertar, elija Referencia y, a continuación,
haga clic en Índice y tablas. Haga clic en la ficha que
desee y elija las opciones que estime apropiadas.
6
7. El campo de índice recopila las entradas de índice
especificadas por los campos XE. Para insertar un
campo de entrada de índice, seleccione el texto que
desea incluir en el índice. En el menú Insertar, elija
Referencia y, a continuación, haga clic en Índice y
tablas. Haga clic en la ficha Índice y, a continuación,
en Marcar entrada.
Sugerencia: También puede abrir el cuadro de
diálogo Marcar entrada de índice más
rápidamente presionando ALT+MAYÚS+X. El
cuadro de diálogo se mantiene abierto para que
pueda marcar varias entradas de índice. Para
obtener más información, vea la Ayuda.
Además de para elaborar informes, esta plantilla se
puede usar para crear propuestas y libros de trabajo.
Para cambiar el texto o los gráficos:
Seleccione cualquier párrafo y comience a
•
escribir.
Para ahorrar tiempo en el futuro, puede guardar
•
la portada de este informe una vez
especificados el nombre y la dirección de la
compañía. Para obtener instrucciones paso a
paso sobre cómo conservar los cambios junto
con la plantilla, vea la sección siguiente.
Cómo modificar este informe
Para crear su propia versión de esta plantilla:
1. Inserte el nombre de la compañía, la dirección
y otra información en lugar del texto de la
página de portada.
2. En el menú Archivo, haga clic en Guardar
como. En la lista Guardar como tipo, haga clic
en Plantilla de documento.
Para crear un informe a partir de la plantilla recién
guardada, en el menú Archivo, haga clic en Nuevo
para abrir de nuevo la plantilla como un documento.
(La información de la compañía debería aparecer en
su lugar.) Para el texto del informe, use estilos como
los de Título 1-5, Texto independiente, Cita y Lista
con números, en la lista Estilo de la barra de
herramientas Formato.
Cómo crear listas con viñetas y listas numeradas
• Para crear una lista con viñetas como ésta,
seleccione uno o varios párrafos y haga clic en
el estilo Lista con viñetas en la lista Estilo de la
barra de herramientas Formato. Para crear una
lista numerada como los párrafos numerados
anteriores, seleccione uno o varios párrafos y
7
8. haga clic en el estilo Lista numerada en la lista
Estilo.
Este estilo (Cita) se puede usar para citas, notas
o párrafos de especial interés. Para usar el estilo
Cita, seleccione cualquier párrafo y, a
continuación, haga clic en Cita en la lista Estilo.
Cómo crear notas al pie
Para crear una nota al pie, en el menú Insertar, elija
Referencia, haga clic en Nota al pie y, por último,
haga clic en Insertar.
Para forzar un salto de página
En general, la mejor manera de forzar un salto de
página consiste en insertar primero un párrafo en
blanco y, a continuación, hacer clic en Salto en el
menú Insertar. En el cuadro de diálogo Salto, haga
clic en Salto de página y, a continuación, en Aceptar.
Más sugerencias para la plantilla
Dos maneras de ver los distintos nombres de estilos
para el texto de las plantillas:
1. En el menú Formato, haga clic en Estilos y
formato. Haga clic en cualquier párrafo.
Observe el nombre del estilo en el cuadro
Formato del texto seleccionado del panel de
tareas Estilos y formato.
2. Haga clic en cualquier párrafo. Vea el nombre
de estilo en la lista Estilo de la barra de
herramientas Formato.
Cómo crear una tabla
En el menú Tabla, elija Insertar y, a continuación,
haga clic en Tabla.
Para modificar una tabla existente, como la que
aparece a continuación, coloque el cursor en cualquier
celda y utilice el menú Tabla para efectuar los
cambios deseados.
Cuota Cuota en
Competidor
actual tres años
8
9. Principal 50% 30%
competidor
Segundo 25% 20%
competidor más
importante
Tercer 15% 12%
competidor más
importante
Crecimiento previsto de los competidores
Cómo editar el texto de la tabla
El texto de esta tabla se puede modificar y darle
formato como si se tratara de texto normal.
Selecciónelo y escriba el texto para reemplazarlo.
Utilice el menú Formato para cambiar los atributos de
fuente y de párrafo.
Cómo cambiar un encabezado o pie de página
En el menú Ver, haga clic en Encabezado y pie de
página. A continuación, puede cambiar o eliminar el
texto en estas secciones al igual que lo haría con
cualquier texto. Cuando haya finalizado, haga clic en
Cerrar.
Para eliminar una línea de regla de un encabezado o
pie de página, en el menú Formato, haga clic en
Bordes y sombreado y, a continuación, haga clic en
la ficha Borde de página. Bajo Valor, haga clic en
Ninguno y, por último, haga clic en Aceptar.
Puede buscar más ayuda en el menú Ayuda.
9