Colabora |
EncriptadorProtector de contraseñas
Fecha: 29/Dic/2008 (26-12-08)
|
IntroducciónRutina que permite encriptar o desencriptar cadenas de texto para usar en contraseñas guardadas en alguna base de datos y así protegerlas.
ExplicaciónEsta función permite tanto abrir, como cerrar una cadena de texto para ser guardada en una base de datos, por lo general las contraseñas de las aplicaciones no son guardadas encriptadas, lo que las hace vulnerables con solo acceder a la tabla que las contiene. Sintaxis: Encriptpador Cadena, Modo Donde cadena es la cadena string que se desea procesar y modo es un 0 para encriptar o 1 para desencriptar.
El código:A continuación el código originalmente creado y probado en en Visual Basic 6 y tomado de una aplicación actualmente en producción. Function Encriptador(cTexto As String, nProceso As Integer) As String ' Declaración de varialbles Dim nClave As Integer Dim nPos As Integer Dim nControl As Integer Dim sVector(62) As String Dim nUbi As Integer Dim sChar As String nControl = 1 ' Guarda en el vector las letras válidas para usar For nPos = 48 To 57 sVector(ncontrol) = Chr(nPos) nControl = nControl + 1 Next For nPos = 65 To 90 sVector(ncontrol) = Chr(nPos) nControl = nControl + 1 Next For nPos = 97 To 122 sVector(ncontrol) = Chr(nPos) nControl = nControl + 1 Next If nProceso = 0 Then ' En este caso encriptará nClave = Int((62 * Rnd) + 1) Encriptador = Chr(nClave) For nPos = 1 To Len(cTexto) sChar = Mid(cTexto, nPos, 1) nUbi = 1 Do If sChar = sVector(nUbi) Then Exit Do nUbi = nUbi + 1 Loop While nUbi < 62 nUbi= nUbi + nClave If nUbi > 62 Then nUbi = nUbi - 62 Encriptador = Encriptador & sVector(nUbi) Next Else nClave = Asc(Mid(cTexto, 1, 1)) For nPos = 1 To Len(cTexto) sChar = Mid(cTexto, nPos, 1) nUbi = 1 Do If sChar = sVector(nUbi) Then Exit Do nUbi = nUbi + 1 Loop While nUbi < 62 nUbi= nUbi - nClave If nUbi < 1 Then nUbi = nUbi + 62 Encriptador = Encriptador & sVector(nUbi) Next End If End Function
Al ver la separación entre el valor 0 y 1 de la variable nProceso se puede ver que la diferencia entre encriptar y lo contrario es mínima, pero lo suficiente para no me permitir en el momento del desarrollo hacer el código mas compacto.
|
Lo comentado en este artículo está probado (y funciona) con la siguiente configuración:
El autor se compromete personalmente de que lo expuesto en este artículo es cierto y lo ha comprobado usando la configuración indicada anteriormente.
En cualquier caso, el Guille no se responsabiliza del contenido de este artículo.
Si encuentras alguna errata o fallo en algún link (enlace), por favor comunícalo usando este link:
Gracias.