sección de códigos
TRANSCRIPT
Sección de códigos , trucos y ejemplos para visual basic
267 - Hacer Login en programa y encriptar el Password
<Volver> - Anterior - Siguiente
Ejemplo para iniciar el programa pidiendo un password que se almacena en el registro con la clave encriptada
La rutina para encriptar y desencriptar cadenas que usa este ejemplo, fue hecha por Harvey Triana.
El proyecto que hice lo podés descargar desde este enlace:
Iniciar programa con Password encriptado
...y A continuación se describe resumidamente los formulario y las funciones que utiliza el proyecto de ejemplo.
El poyecto tiene 4 formulario y un módulo bas.
El mismo inicia mediante un procedimiento Sub Main que está ubicado en el módulo bas. Dentro del Sub Main primero lee del registro si hay una contraseña. Si la hay, carga el formulario de Login que es el siguiente:
Formulario de Login
00615421140940 FORID:11 Buscar
Al presionar el botón Entrar, se envia como parámetro a la función llamada " Login ", el password escrito en el Textbox. La función retorna True o False si es correcta o no.
Function Login(PassWord As String) As Boolean
Si la contraseña es correcta, descarga el formulario de Loign y se carga el formulario principal del programa.
Formulario para cambiar la Clave
Para cambiar la contraseña, hay un formulario similar al anterior llamado frmCambiarClave que es el siguiente:
En este formulario, al presionar Aceptar se llama a la función Cambiar_Password
'Función que cambia el Password (Recibe la contraseña vieja, contraseña y confirmación)
'-----------------------------------------------------------------------------
Function Cambiar_Password(Old_Password As String, _
New_Password As String, _
Confirm_Password As String) As Boolean
La función también es de tipo Boolean, y retorna True si se han ingresado los datos correctos o False si no son correctos, por ejemplo si la contraseña vieja no coincide.
Eliminar la clave
Para eliminar la clave hay una Sub muy simple llamada Eliminar_Password
Formulario para crear un nuevo Password
Este formulario se llama FrmNuevoPassword, y la función que usa para crear y establecer la nueva clave se llama Nuevo_Password ..que tiene dos parámetros:
Function Nuevo_Password(El_Password As String, PassConfirm As String) As Boolean
Si el password y la confirmación enviadas son correctas, la función devuelve True y añade la clave al registro, de lo contrario devuelve False
Módulo
Por último el módulo tiene, aparte de las funciones dichas antes, dos propiedades y la función que permite encriptar y desencriptar la contraseña.
La propiedad para leer la clave
Public Property Get ElPassword() As String
'Lee del registro la clave encriptada
ElPassword = GetSetting(App.EXEName, SECCION, CLAVE, "")
End Property
.. para establecerla:
Public Property Let ElPassword(ByVal sPass As String)
Dim PassEncrip As String
'Primero Encripta
PassEncrip = Encriptar(sPass, sPass, ENCRYPT)
'Luego Guarda en el registro
Call SaveSetting(App.EXEName, SECCION, CLAVE, PassEncrip)
End Property
y la función para encriptar y desencriptar de Harvey Triana se llama " Encriptar " y tiene tres parámetros:
Function Encriptar( _
UserKey As String, Text As String, Action As Single _
) As String
La primera es la clave, la segunda la cadena a encriptar (que en este caso también es la clave) y el tercer parámetro es la acción a realizar, es decir Codificar o Decodificar ( El valor 1 Encripta y el valor 2 Desencripta )
Recursos Visual basic 6.0 - Relacionados
Formulario de Login usando una base de datos y Ado
Encriptar y desencriptar datos de una base de datos
Buscar en Recursos vb
00615421140940 FORID:11 Buscar
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2009 - www.recursosvisualbasic.com.ar
Inicio Ejemplos vb Ocx - Activex Api vb Tutoriales - Manuales Código fuente vb.net
Encriptar una contraseña en visual basic.
Visual Basic 25 febrero 2008
Esta función te permite comprobar la contraseña de un usuario contra una base de datos sin necesidad de conocerla. El proceso inverso no es posible.
La función está basada en otras que he recopilado por internet y he adecuado a los
sistemas de información de mi empresa. Es correcta y cumple la ley de protección de datos ya que el administrador no conocerá la contraseña del usuario y queda almacenada en formato ilegible.
Desde que este algoritmo fue público, los usuarios deben evitar el uso de palabras individuales como contraseñas, ya que un programa “cracker” podría iniciar un bucle a través de un diccionario ortográfico y aplicar esta función para tratar de coincidir con el valor hashed. Para mas seguridad los usuarios deberían utilizar por lo menos dos palabras, y tal vez utilizar dígitos y signos de puntuación en la contraseña. Ya sabéis que a los hackers hay que ponérselo lo mas difícil posible, estas recomendaciones se las hago a mis usuarios pero otra cosa es que me hagan caso, seguro que unos cuantos de ellos tienen el nombre del marido o del hijo como contraseña.
Su uso se hace enviándole el usuario y la contraseña a la función para que te devuelva el valor hash y se contrasta con el valor almacenado en la base de datos.
Función:
Function HashPassword(ByVal vsUserId As String, ByVal vsPassword As String) As Double
Const uHASH_DEPTH = 6Static k(uHASH_DEPTH) As Integer
Dim S As StringDim I As IntegerDim J As IntegerDim k1 As IntegerDim N As IntegerDim fHash As DoubleDim fTemp As Double
‘ Si la contraseña está en blanco,‘ el valor de hash sigue siendo cero.‘ Por lo tanto significa “sin contraseña”.fHash = 0#
If vsPassword <> “” Then‘ Si incluyes el nombre del usuario como parte del hash,‘ dos usuarios con la misma contraseña no tendrán el mismo‘ valor de hash:S = vsPassword & vsUserId‘s = UCase$(s) ‘ Activa esta linea para convertir a mayúsculasN = Len(S)
k(1) = Asc(Mid$(S, 1, 1))For J = 2 To uHASH_DEPTHk1 = 1 + (k(J – 1) Mod N)k(J) = Asc(Mid$(S, k1, 1))
If k(J) = k(J – 1) Then
k(J) = k(J) + 1End IfNext J
For I = 1 To NfTemp = IFor J = 1 To uHASH_DEPTHk1 = 1 + ((I + k(J)) Mod N)fTemp = fTemp * Asc(Mid$(S, k1, 1))Next J
fHash = fHash + fTempNext IEnd If
HashPassword = fHashEnd Function
Uso de la función en el programa:
En la siguiente linea se hace una comparación entre la cadena hash que se supone que tenemos almacenada en la base de datos y la que ha tecleado el usuario.
bPwdOk es un boleano que nos dice si coincide el hash que tenemos almacenado en nuestra base de datos con el que ha tecleado el usuario.
bPwdOk = (StrComp(tabla!Pwd, HashPassword(txtUsuario.Text, txtPwd.Text), vbTextCompare) = 0)
tabla!pwd : campo que hemos obtenido a través de un recordset de la base de datos en la que está almacenado el valor hash de la contraseña del usuario.
txtUsuario.text : valor de la caja de texto del UserId, en el caso del gráfico D-SUAREZ. txtPwd.text : el valor de la caja de texto que contiene la contraseña que ha escrito el
usuario.
Vota este artículo:
(No Ratings Yet)
Posts anterior y posterior:
« Atomz (Juego)
Desgarrador relato de un amigo sobre la eutanasia. »
Posts Relacionados:
canalvisualbasic Web de recursos de Visual basic. Desproteger hoja de Excel con contraseña. enviar email con visual basic la web de dragon
En esta misma categoría:
Previo: « Capturar el usuario de Red desde Visual Basic. Siguiente: Leer y escribir de un archivo INI. Visual Basic »
2 Respuestas a “Encriptar una contraseña en visual
Encriptación 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.
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 infimas, 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 publico 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.
Dos Procedimientos de Encriptación
La Encriptación tiene dos elementos: Un mensaje, y una clave privada de acceso entre el emisor y el receptor, con la cual se puede descifrar el mensaje. El procedimiento de encriptación produce un mensaje o archivo cifrado. Presento dos procedimientos escritos en Visual Basic, catalogados como verdaderas maneras de encriptación.
Modelo EncryptionString
EncryptionString, es un clásico sistema el cual toma el mensaje y una clave del usuario, y a través de una combinación de estos dos parámetros se produce una cadena codificada. Mantengo la explicación original del método:
Texto a codificar: ENCRYPTIONCaracteres del Texto: E N C R Y P T I O NCódigos ASCII: 69 78 67 82 89 80 84 73 79 78Contraseña KEY: K E Y K E Y K E Y KCaracteres de KEY: 75 69 89 75 69 89 75 69 89 75Suma de Códigos ASCII: 144 147 156 157 158 169 159 142 168 153En caracteres: “ œ ? © Ÿ ? ¨ ™� �
Texto codificado: “œ?©Ÿ?¨™ � �
El modo para usar la función EncryptionString es el siguiente:
'//CodificaTextoCodificado = EncryptString(TextoOriginal, Contraseña, ENCRYPT)
'//DecodificaTextoOriginal = EncryptString(TextoCodificado, Contraseña, DECRYPT)
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-ZOption Explicit
'//For Action parameter in EncryptStringPublic 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 '//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 = rtnEnd Function
Modelo ChrTran
ChrTran es violentamente complicado de violar, de hecho imposible. Virtualmente las probabilidades de descifrar un mensaje son del orden de 255! (255 factorial), un numero sin fin en la práctica (por ejemplo las calculadoras comunes soportan solo hasta 69!).
Tengo que confesar que tuve que reescribir ChrTran porque presentaba errores de programación y mucho código para optimizar, el resultado es sorprendente. Ni que decir que no tenía en cuenta que en español usamos tildes y eñes.
Como su abreviación lo dice ChrTran transpone caracteres, usa dos claves de 255 caracteres (la carta ASCII) y produce un texto codificado de origen aleatorio. Toma cada carácter del texto, encuentra su posición en la primera clave, e intercambia este carácter por el carácter en la misma posición de la segunda clave. Es complicado de asimilar.
Lo más difícil de ChrTran es el manejo de las claves. La primera clave (la sarta de búsqueda) podría ser publica (mejor debiera decir debe ser publica). Mientras que la segunda clave es una sarta aleatoria de la carta ASCII.
El modo de manejar ChrTran es el siguiente:
ClaveAleatoria = RandomChart() '// Se podría usar la sarta de búsqueda, ClaveDeBúsqueda, como'// otra cadena aleatoria con ClaveDeBúsqueda = RandomChart()'// aqui se mantiene un nivel de Encriptación flexible, más no'// inseguro, al hacer ClaveDeBúsqueda como la secuencia 0 a 255'// de la carta ASCII:For i = 0 To 255 ClaveDeBúsqueda = ClaveDeBúsqueda + Chr$(i)Next '//CodificaTextoCodificado = ChrTran(TextoOriginal, ClaveDeBúsqueda, ClaveAleatoria)
'//DecodificaTextoOriginal= ChrTran(TextoCodificado, ClaveAleatoria, ClaveDeBúsqueda)
En la primera línea se usa RandonChart, la cual es una función que retorna la carta ASCII en un orden aleatorio.
Como posiblemente se deduce, usar ChrTran para escribir un programa que trabaje encriptación, representa una labor bastante especializada, pero por supuesto nada del otro mundo.
El código de ChrTran es el siguiente:
DefInt A-ZOption Explicit
'//---------------------------------------------'// Return a random string of ASCII Chart.'// Used by ChrTran. By Harvey T.'//---------------------------------------------Public Function RandomChart() As String Dim Char As String Dim RndStr As String Dim n As Integer Randomize Timer Do Char = Chr$(Int(Rnd * 256)) If InStr(RndStr, Char) = 0 Then n = n + 1 RndStr = RndStr + Char End If Loop Until n = 256 RandomChart = RndStrEnd Function
'---------------------------------------------------------------------' ChrTran' Optimizing by Harvey T.'---------------------------------------------------------------------Public Function ChrTran(Text As String, SStr As String, EStr As String) As String Dim i As Integer
Dim rtn As String For i = 1 To Len(Text) rtn = rtn + Mid$(EStr, InStr(SStr, Mid$(Text, i, 1)), 1) Next ChrTran = rtnEnd Function
Aplicación de Ejemplo
La figura que encabeza este articulo muestra la cara de la aplicación EncryptProject, la cual es una herramienta que utiliza las técnicas de encriptación descritas y lo creé con el propósito de proteger código Visual Basic. Es decir, supón que trabajas en un proyecto grande, en un equipo de programación y deseas mantener en privado ciertos módulos. Generalmente yo organizo mis proyectos por módulos, en carpetas aparte, así, EncryptProject tiene la finalidad de encriptar los módulos Visual Basic de esta carpeta. Así, cuando voy a trabajar, decodifico, cuando me voy encripto.
Si desea usar EncryptProject , debe tener en cuanta esta precuación:
Backup your files (in another disc or with password) before encrypt project.No forget your password, it's without it reversing !Encrypt only work over: Bas, Frm, Cls, Ctl, html files
Es decir, como una percusión, debiera tener al menos una copia aparte del proyecto. Pero no se atemorice, el programa es seguro, lo peor que le podría pasar al que lo use es olvidar la contraseña (EncryptProject pide verificación de la contraseña antes de codificar). Recomiendo para empezar, hacer una prueba sencilla con un proyecto simple.
Dos pasos y salimos. Hagamos una prueba simple. Cree una carpeta, copie o cree u proyecto Visual Basic en ella.
Encriptando
Abra EncryptProject, y escriba la trayectoria completa de la carpeta (si lo prefiere, arrastre un archivo cualquiera de la carpeta desde el Explorador de archivos de Windows a la caja de texto Project Folder).
Escriba la contraseña y use el comando [Encrypt]. Se pedirá la verificación de la contraseña. Después de confirmar, se encriptará el proyecto.
Edin Sagastume
Este blog
Acceso desde aquí
Sitios de interes
Encripta/Desencriptar cadenas (Visual Basic)
Las siguientes funciones les van a servir para Encriptar y Desencriptar cadenas de caracteres con Password.
Rem Encripta una cadena de caracteres.Rem S = Cadena a encriptarRem P = PasswordFunction EncryptStr(ByVal S As String, ByVal P As String) As StringDim I As Integer, R As StringDim C1 As Integer, C2 As Integer
If Len(P) > 0 ThenFor I = 1 To Len(S)C1 = Asc(Mid(S, I, 1))If I > Len(P) ThenC2 = Asc(Mid(P, I Mod Len(P) + 1, 1))
C2 = Asc(Mid(P, I, 1))
C1 = C1 + C2 + 64If C1 > 255 Then C1 = C1 - 256R = R + Chr(C1)
EncryptStr = REnd Function
Rem Desencripta una cadena de caracteres.Rem S = Cadena a desencriptarRem P = PasswordFunction UnEncryptStr(ByVal S As String, ByVal P As String) As StringDim I As Integer, R As StringDim C1 As Integer, C2 As Integer
If Len(P) > 0 ThenFor I = 1 To Len(S)C1 = Asc(Mid(S, I, 1))If I > Len(P) Then
Ver también:
Encriptacion de password en visual »
C2 = Asc(Mid(P, I Mod Len(P) + 1, 1))
C2 = Asc(Mid(P, I, 1))
C1 = C1 - C2 - 64If Sgn(C1)=-1 Then C1 = 256 + C1R = R + Chr(C1)
UnEncryptStr = REnd Function
Saludos ;-)
Autor Enviado por: Hurricane - Enviado con fecha: 28-04-2005 01:03:05.
Preguntar sobre un Truco | Ver más Trucos
Ejemplo 1
Código fuente realizado por Harvey Triana ( Si querés visitar su sitio web --> Harvey Triana )
Este es un algoritmo que permite encriptar y desencriptar cadenas de caracteres
La función se llama EncryptString y tiene tres parámetros:
'---------------------------------------------------------------------
' EncryptString
' Modificado por Harvey T.
'---------------------------------------------------------------------
Public Function EncryptString( _
UserKey As String, Text As String, Action As Single _
) As String
El parámetro UserKey es la clave.
El parámetro Text es el texto a encriptar o desencriptar.
El parámetro Action indica QUE hacer, ..es decir Encriptar o desencriptar. ( El valor ENCRYPT es para encriptar y el valor DECRYPT para desencriptar)
Código fuente de la función:
Texto plano Copiar código fuente Imprimir
1. Option Explicit 2. 3. '//For Action parameter in EncryptStrin
g 4. Const ENCRYPT = 1 5. Const DECRYPT = 2 6. 7. '--------------------------------------
------------------------------- 8. ' EncryptString 9. ' Modificado por Harvey T. 10. '-----------------------------------
---------------------------------- 11. 12. Public Function EncryptString( _ 13. UserKey As String, Text As Strin
g, Action As Single _ 14. ) As String 15. Dim UserKeyX As String 16. Dim Temp As Integer 17. Dim Times As Integer 18. Dim i As Integer 19. Dim j As Integer 20. Dim n As Integer 21. Dim rtn As String 22. 23. '//Get UserKey characters 24. n = Len(UserKey) 25. ReDim UserKeyASCIIS(1 To n) 26. For i = 1 To n 27. UserKeyASCIIS(i) = Asc(Mid$
(UserKey, i, 1)) 28. Next 29. 30. '//Get Text characters 31. ReDim TextASCIIS(Len(Text)) As I
nteger 32. For i = 1 To Len(Text) 33. TextASCIIS(i) = Asc(Mid$
(Text, i, 1))
34. Next 35. 36. '//Encryption/Decryption 37. If Action = ENCRYPT Then 38. For i = 1 To Len(Text) 39. j = IIf(j + 1 >= n, 1, j
+ 1) 40. Temp = TextASCIIS(i) + Us
erKeyASCIIS(j) 41. If Temp > 255 Then 42. Temp = Temp - 255 43. End If 44. rtn = rtn + Chr$(Temp) 45. Next 46. ElseIf Action = DECRYPT Then 47. For i = 1 To Len(Text) 48. j = IIf(j + 1 >= n, 1, j
+ 1) 49. Temp = TextASCIIS(i) - Us
erKeyASCIIS(j) 50. If Temp < 0 Then 51. Temp = Temp + 255 52. End If 53. rtn = rtn + Chr$(Temp) 54. Next 55. End If 56. 57. '//Return 58. EncryptString = rtn 59. End Function 60.
Ejemplo 2
Este otro código fuente fue enviado por Miguel Cejas.
El mismo, tiene dos funciones, una para encriptar y la otra para desencriptar. El único parámetro que requieren las funciones, .. es el dato en cuestión a codificar o decodificar
Colocar un CommandButton en el formulario y agregar un módulo
Option Explicit
'//For Action parameter in EncryptStringConst ENCRYPT = 1Const DECRYPT = 2
'---------------------------------------------------------------------' EncryptString' Modif icado por Harvey T.'---------------------------------------------------------------------
bas al proyecto
Código fuente en el form1
Texto plano Copiar código fuente Imprimir
1. Option Explicit 2. Private Sub Command1_Click() 3. 4. Dim ValorEncriptado As Variant 5. Dim ValorDesencriptado As Variant 6. 7. ' Encripta _ 8. '''''''''''''''''''''''''''''''''' 9. ValorEncriptado = Encriptar
("Recursos visual basic") 10. 11. ' Visualiza la cadena encriptada 12. MsgBox "Dato encriptado: " & Val
orEncriptado, vbInformation 13. 14. ' Desencripta 15. 16. ''''''''''''''''''''''''''''''''
''' 17. ValorDesencriptado = Desencripta
r(ValorEncriptado) 18. 19. ' Muestra el valor decodificado 20. MsgBox ValorDesencriptado, vbInf
ormation 21. 22. 23. End Sub
Código fuente en el módulo bas
Texto plano Copiar código fuente Imprimir
1. Option Explicit
Option ExplicitPrivate Sub Command1_Click() Dim ValorEncriptado As Variant Dim ValorDesencriptado As Variant ' Encripta _ '''''''''''''''''''''''''''''''''' ValorEncriptado = Encriptar("Recursos visual basic")
2. 3. Private Function ConvToHex(x As Intege
r) As String 4. If x > 9 Then 5. ConvToHex = Chr(x + 55) 6. Else 7. ConvToHex = CStr(x) 8. End If 9. End Function 10. 11. ' función que codifica el dato 12. ''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''' 13. Function Encriptar(DataValue As Var
iant) As Variant 14. 15. Dim x As Long 16. Dim Temp As String 17. Dim TempNum As Integer 18. Dim TempChar As String 19. Dim TempChar2 As String 20. 21. For x = 1 To Len(DataValue) 22. TempChar2 = Mid(DataValue, x
, 1) 23. TempNum = Int(Asc(TempChar2)
/ 16) 24. 25. If ((TempNum * 16) < Asc(Tem
pChar2)) Then 26. 27. TempChar = ConvToHex(Asc
(TempChar2) - (TempNum * 16)) 28. Temp = Temp & ConvToHex(
TempNum) & TempChar 29. Else 30. Temp = Temp & ConvToHex(
TempNum) & "0" 31. 32. End If 33. Next x 34. 35. 36. Encriptar = Temp 37. End Function 38. Private Function ConvToInt(x As Stri
ng) As Integer 39. 40. Dim x1 As String 41. Dim x2 As String 42. Dim Temp As Integer 43. 44. x1 = Mid(x, 1, 1) 45. x2 = Mid(x, 2, 1) 46. 47. If IsNumeric(x1) Then 48. Temp = 16 * Int(x1) 49. Else 50. Temp = (Asc(x1) - 55) * 16
51. End If 52. 53. If IsNumeric(x2) Then 54. Temp = Temp + Int(x2) 55. Else 56. Temp = Temp + (Asc(x2) - 55) 57. End If 58. 59. ' retorno 60. ConvToInt = Temp 61. 62. End Function 63. 64. ' función que decodifica el dato 65. ''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''' 66. Function Desencriptar(DataValue As V
ariant) As Variant 67. 68. Dim x As Long 69. Dim Temp As String 70. Dim HexByte As String 71. 72. For x = 1 To Len(DataValue) Step
2 73. 74. HexByte = Mid(DataValue, x,
2) 75. Temp = Temp & Ch
r(ConvToInt(HexByte)) 76. 77. Next x 78. ' retorno 79. Desencriptar = Temp 80. 81. End Function
Ejemplo 3
Sencillo módulo de clase que encripta y desencripta un password o
Option Explicit
Private Function ConvToHex(x As Integer) As String If x > 9 Then ConvToHex = Chr(x + 55) Else ConvToHex = CStr(x) End IfEnd Function
cadena utilizando un simple algorítmo
Formulario de prueba
Descargar módulo clsEncriptPass
Ejemplo 4
Ejemplo enviado por Luis Nuñez de Chile que permite encriptar strings o cadenas de caracteres en vb
Para el poyecto colocar en el formulario dos controles textbox ( txtEntrada y txtSalida )y dos commandbutton ( Command1 y Command2 ) como se ve en este gráfico
Código fuente en el form
Texto plano Copiar código fuente Imprimir
1. Option Explicit 2. 3. 4. Private s As String 5. 6. '**************************** 7. '**** CALCULA LA SEMILLA **** 8. '**************************** 9. Private Function Semilla(strClave As St
ring) As String 10. 11. Dim lngSemilla1 As Long 12. Dim lngSemilla2 As Long 13. Dim j As Long 14. Dim i As Long 15. lngSemilla1 = 0 16. lngSemilla2 = 0
17. j = Len(strClave) 18. 19. For i = 1 To Len(strClave) 20. 21. lngSemilla1 = lngSemilla1 +
Asc(Mid$(strClave, i, 1)) * i 22. lngSemilla2 = lngSemilla2 +
Asc(Mid$(strClave, i, 1)) * j 23. j = j - 1 24. 25. Next 26. 27. Semilla = LTrim$(Str$
(lngSemilla1)) + "," + LTrim$(Str$(lngSemilla2))
28. 29. End Function 30. 31. '****************** 32. '**** CODIFICA **** 33. '****************** 34. Private Function Codificar(strCadena
As String, strSemilla As String) As String
35. 36. Dim lngIi1 As Long 37. Dim lngIi2 As Long 38. Dim i As Long 39. Dim j As Long 40. lngIi1 = Val(Left$(strSemilla, I
nStr(strSemilla, ",") - 1)) 41. lngIi2 = Val(Mid$(strSemilla, In
Str(strSemilla, ",") + 1)) 42. 43. For i = 1 To Len(strCadena) 44. 45. lngIi1 = lngIi1 - i 46. lngIi2 = lngIi2 + i 47. 48. If (i Mod 2) = 0 Then 49. 50. Mid(strCadena, i, 1) = C
hr$((Asc(Mid$(strCadena, i, 1)) - lngIi1) And &HFF)
51. 52. Else 53. 54. Mid(strCadena, i, 1) = C
hr$((Asc(Mid$(strCadena, i, 1)) + lngIi2) And &HFF)
55. 56. End If 57. 58. Next 59. 60. Codificar = strCadena 61. 62. End Function 63.
64. '******************** 65. '**** DECODIFICA **** 66. '******************** 67. Private Function DeCodificar(strCade
na As String, strSemilla As String) As String
68. 69. Dim lngIi1 As Long 70. Dim lngIi2 As Long 71. Dim i As Long 72. Dim j As Long 73. lngIi1 = Val(Left$(strSemilla, I
nStr(strSemilla, ",") - 1)) 74. lngIi2 = Val(Mid$(strSemilla, In
Str(strSemilla, ",") + 1)) 75. 76. For i = 1 To Len(strCadena) 77. 78. lngIi1 = lngIi1 - i 79. lngIi2 = lngIi2 + i 80. 81. If (i Mod 2) = 0 Then 82. 83. Mid(strCadena, i, 1) = C
hr$((Asc(Mid$(strCadena, i, 1)) + lngIi1) And &HFF)
84. 85. Else 86. 87. Mid(strCadena, i, 1) = C
hr$((Asc(Mid$(strCadena, i, 1)) - lngIi2) And &HFF)
88. 89. End If 90. 91. Next 92. 93. DeCodificar = strCadena 94. 95. End Function 96. 97. Private Sub cmdCodificar_Click() 98. 99. txtSalida.Text = Codificar(txtEn
trada.Text, s) 100. txtEntrada.Text = "" 101. 102. End Sub 103. 104. Private Sub cmdDecod_Click() 105. 106. txtEntrada.Text = DeCodificar(tx
tSalida.Text, s) 107. txtSalida.Text = "" 108. 109. End Sub 110. 111. Private Sub Form_Load() 112.
113. s = Semilla("hola") 114. Command1.Caption = "Codificar" 115. Command2.Caption = "Decodificar"
116. 117. End Sub
Ejemplo 5
Ejemplo enviado por SKL , de un formulario para encriptar y desencriptar una cadena de caracteres, recorreindo cada caracter y cambiándole el código Ascii
Descargar proyecto
Enlaces relacionados
Encriptar datos de un campo de una base de
Option Explicit
Private s As String
'****************************'**** CALCULA LA SEMILLA ****'****************************Private Function Semilla(strClave As String) As String