Encripta Y Desencripta
amiguis1402862 de Agosto de 2014
1.025 Palabras (5 Páginas)165 Visitas
ENCRIPTA Y DESENCRIPTA
El siguiente artículo se trata de un algoritmo que permite encriptar y desencriptar texto, cadenas a través de una clave personal de un usuario. Este algoritmo puede utilizarse para cifrar datos para una base de datos, un archivo o fichero, contraseñas, etc. En breve hago un detalle del mismo.
El Algoritmo y su Origen
El siguiente código realiza los dos procesos de Encriptación y Desencriptación. Existe un parámetro en la función que se encarga de controlar este comportamiento. La función se encuentra dentro de una clase, la cual, he llamado ClsEcrypt. El algoritmo es que se muestra a continuación:
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 Encripción...
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 Dencripción...
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
¿Cómo Funciona?
El parámetro Mode, según sea True o False, es utilizado para optar por el modo de Encriptación y Desencriptación. Los dos siguientes parámetros, Word y Key, son utilizados para trasladar los datos hacia la estructura de proceso de codificación.
Suponiendo que el parámetro Mode sea False, el algoritmo procederá a realizar el proceso de Encriptación. A su vez, tomará de los parámetros 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 decisión, 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 función Mid en la línea 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 fución Mid. Unas líneas más adelante, vemos que el caracter almacenado en Cd es casteado "convertido" a un valor numérico. Dicho valor numérico se corresponde a la carta de codificación ASCII. Luego, este número más su homólogo 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 código binario de 8 bits, 2 elevado
...