Como Encriptar y Desencriptar Una Cadena de Texto

download Como Encriptar y Desencriptar Una Cadena de Texto

of 2

Transcript of Como Encriptar y Desencriptar Una Cadena de Texto

Como Encriptar y Desencriptar una cadena de textoPara usar en tus programas. Puedes manejar las contraseas encriptadas y guardadas en un campo de texto totalmente protegido, no es posible desencriptarlo sin conocer el metodo de desencriptar (o al menos no es nada fcil). La funcion para encriptar es la siguiente:Function Encripta(Pass As String) As String Dim Clave As String, i As Integer, Pass2 As String Dim CAR As String, Codigo As String Clave = "%&/@#$A" Pass2 = "" For i = 1 To Len(Pass) CAR = Mid(Pass, i, 1) Codigo = Mid(Clave, ((i - 1) Mod Len(Clave)) + 1, 1) Pass2 = Pass2 & Right("0" & Hex(Asc(Codigo) Xor Asc(CAR)), 2) Next i Encripta = Pass2 End Function

Para utilizarla simplemente escribimos Clave=Encripta("Clave Muy Secreta") Y despues de eso, Clave contendr la cadena "66904759250369345CDC754A2351413544". Teniendo la clave encriptada se puede guardar en la base de datos o hacer cualquier cosa con ella y para recuperar la cadena original utilizamos la siguiente funcin:Function DesEncripta(Pass As String) As String Dim Clave As String, i As Integer, Pass2 As String Dim CAR As String, Codigo As String Dim j As Integer Clave = "%&/@#$A" Pass2 = "" j = 1 For i = 1 To Len(Pass) Step 2 CAR = Mid(Pass, i, 2) Codigo = Mid(Clave, ((j - 1) Mod Len(Clave)) + 1, 1) Pass2 = Pass2 & Chr(Asc(Codigo) Xor Val("&h" + CAR)) j = j + 1 Next i DesEncripta = Pass2 End Function

Si se fijan atentamente, es la misma funcin con un par de lneas distintas. Y si usamos esta funcin sobre la cadena obtenida de la anterior sera con el cdigo:

Original=DesEncripta("66904759250369345CDC754A2351413544") y con eso obtenemos la cadena original. Observaciones del encriptado.

El algoritmo utiliza un sistema de codificacin a nivel de bits y los cdigos resultantes se traducen despues a hexadecimal para complicar un poco mas la interpretacin y tambien para asegurar que no se tengan caracteres extraos. El resultado al ser un Hexadecimal, contendr nicamente los nmeros del 0 al 9 y las letras ABCDEF. La cadena resultante contendr siempre el doble de caracteres que la cadena original. Por lo que no se recomienda mucho para encriptar archivos completos. (adems, hay que tomar esto en cuenta al definir el tamao del campo en la base de datos) Hay una variable Clave = "%&/@#$A" que se utiliza como array de bits para las operaciones XOR. Esa variable se puede modificar si usted lo desea y as hara imposible la desecripcin por parte de alguien que tambin haya leido esta pgina.

NOTA: Si tu aplicacin requiere de verdadera seguridad, no basta con nadamas encriptar el dato, ya que todava se puede borrar o reemplazar el contenido del campo encriptado por otro tambien encriptado pero conocido y de esa forma permitir el acceso. Te recomiendo que utilices algn esquema de comprobacin cruzada entre los distintos campos que intervienen en la seguridad para complicarles un poco ms la vida a los hackers. La comprobacin cruzada consiste en colocar uno o varios datos dentro de la contrasea antes de encriptarla y de esa forma puedes tu validar que esa contrasea est relacionada con el login o con un registro espcifico y as si lo borran o reemplazan no les va a funcionar y adems te daras cuenta del intento de violar tu sistema.