Вы находитесь на странице: 1из 2

ENCRIPTA Y DESENCRIPTA

El siguiente artculo se trata de un algoritmo que permite encriptar y desencriptar texto,


cadenas a travs de una clave personal de un usuario. Este algoritmo puede utilizarse para
cifrar datos para una base de datos, un archivo o fichero, contraseas, etc. En breve hago un
detalle del mismo.
El Algoritmo y su Origen
El siguiente cdigo realiza los dos procesos de Encriptacin y Desencriptacin. Existe un
parmetro en la funcin que se encarga de controlar este comportamiento. La funcin se
encuentra dentro de una clase, la cual, he llamado ClsEcrypt. El algoritmo es que se
muestra a continuacin:
Public Function Encrypt(ByVal Word As String, ByVal Key As String, _
Optional ByVal Mode As Boolean = False) As String
Dim w As Long, k As Long, p As Long, j As Long, NuChr As Long
Dim Cd As String, Kd As String, Rd As String
w = Len(Word)
k = Len(Key)
' Modalidad de Encripcin...
If Mode = False Then
For j = 1 To w
Cd = Mid(Word, j, 1)
If p = k Then p = 0
p = p + 1
Kd = Mid(Key, p, 1)
NuChr = Asc(Cd) + Asc(Kd)
If NuChr > 255 Then
NuChr = NuChr - 255
End If
Rd = Rd & Chr(NuChr)
Next
Encrypt = Rd
Exit Function
End If
' Modalidad de Dencripcin...
If Mode = True Then
For j = 1 To w
Cd = Mid(Word, j, 1)
If p = k Then p = 0
p = p + 1
Kd = Mid(Key, p, 1)
NuChr = Asc(Cd) - Asc(Kd)
If NuChr < 0 Then
NuChr = NuChr + 255
End If
Rd = Rd & Chr(NuChr)
Next
Encrypt = Rd
Exit Function
End If
End Function
Cmo Funciona?
El parmetro Mode, segn sea True o False, es utilizado para optar por el modo de
Encriptacin y Desencriptacin. Los dos siguientes parmetros, Word y Key, son
utilizados para trasladar los datos hacia la estructura de proceso de codificacin.
Suponiendo que el parmetro Mode sea False, el algoritmo proceder a realizar el proceso
de Encriptacin. A su vez, tomar de los parmetros Word y Key la cadena de dato y la
clave para procesarla y encriptar el mensaje. Analizando el proceso que se encuentra dentro
de una estructura de decisin, vemos que se produce un proceso muy interesante. La
variable w es utilizada para determinar la cantidad de caracteres posee la frase a encriptar,
que se encuentra almacenada en la variable Word. As mismo, la variable k, hace lo mismo
para la variable Key que resulta en la clave de cifrado. Ahora, la funcin Mid en la lnea
Mid(Word, j, 1), es utilizada para recorrer, caracter por caracter, la frase almacenada en la
variable Word. Cada uno de estos caracteres, se almacena en la variable temporal Cd por
cada paso o avance de lectura de la fucin Mid. Unas lneas ms adelante, vemos que el
caracter almacenado en Cd es casteado "convertido" a un valor numrico. Dicho valor
numrico se corresponde a la carta de codificacin ASCII. Luego, este nmero ms su
homlogo proceso con la clave, me refiero a la variable Key, sufre el mismo proceso de
casteo. Todo este proceso final da como resultado otro caracter que se supone es el cifrado.
El problema que existe en este proceso es superar el valor de 255. Como se dar cuenta, la
cartilla ASCII codifica caracteres en formato oscila entre los valores 0 y 255. Dado que se
trata de una cartilla basada en un cdigo binario de 8 bits, 2 elevado a 8 resulta 256. Por
tanto, resulta entonces que el cdigo contempla 256 caracteres, los cuales figuran las teclas,
funciones, fines de carro, espacio, intro, etc.
Para evitar superar esta cota, se procede a restar el nmero obtenido por 255. De esta
forma, se salva el peso de los bits en el buffer del caracter y se evita a su vez un error de
excepcin. Cada vez que la suma supere esta cifra, se proceder con la resta, de lo
contrario, se dejar el resultado tal cual como est.
Por ltimo, la variable Rd ms la concatenacin de la variable NuChr casteada a caracter,
ensamblan la frase cifrada para el proceso final.
El proceso de desencriptacin, es similar al de encriptacin salvo que se produce una suma
del valor 255 y una comparacin para determinar si el valor de la variable NuChr resulta
menor que cero.

Вам также может понравиться