0 оценок0% нашли этот документ полезным (0 голосов)
44 просмотров2 страницы
Este documento describe un algoritmo para encriptar y desencriptar texto utilizando una clave personal del usuario. El algoritmo funciona sumando o restando el valor ASCII de cada carácter del texto con el valor ASCII del carácter correspondiente en la clave. Para evitar superar el límite de 255 en el valor ASCII, se resta 255 cuando la suma es mayor o se suma 255 cuando la resta es menor que cero. Esto permite encriptar y desencriptar cadenas de texto de manera reversible.
Este documento describe un algoritmo para encriptar y desencriptar texto utilizando una clave personal del usuario. El algoritmo funciona sumando o restando el valor ASCII de cada carácter del texto con el valor ASCII del carácter correspondiente en la clave. Para evitar superar el límite de 255 en el valor ASCII, se resta 255 cuando la suma es mayor o se suma 255 cuando la resta es menor que cero. Esto permite encriptar y desencriptar cadenas de texto de manera reversible.
Este documento describe un algoritmo para encriptar y desencriptar texto utilizando una clave personal del usuario. El algoritmo funciona sumando o restando el valor ASCII de cada carácter del texto con el valor ASCII del carácter correspondiente en la clave. Para evitar superar el límite de 255 en el valor ASCII, se resta 255 cuando la suma es mayor o se suma 255 cuando la resta es menor que cero. Esto permite encriptar y desencriptar cadenas de texto de manera reversible.
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.