Colabora
 

Encriptador

Protector de contraseñas

 

Fecha: 29/Dic/2008 (26-12-08)
Autor: Osvaldo Esteban Vega Nuñez - [email protected]

 


Introducción

Rutina que permite encriptar o desencriptar cadenas de texto para usar en contraseñas guardadas en alguna base de datos y así protegerlas.

 

Explicación

Esta 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.

 



Compromiso del autor del artículo con el sitio del Guille:

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.



Ir al índice principal de el Guille