domingo, 19 de noviembre de 2006

Código simple de encriptación en VB

Aquí les va este código, que a pesar de ser sencillo es muy útil para encriptar bases de datos de seguridad baja.

El código se puede ingresar en un módulo para tener una rápida referencia a él.

public function encriptar()

Dim indice As Integer = 1
Dim longitud As Integer = 0
Dim valornumerico As Integer = 1
Dim encryptar As String = ""

longitud = Len(Trim(TextBox1.Text))
Dim caracteres(longitud) As String
For indice = 1 To longitud
caracteres(indice) = Mid(TextBox1.Text, x, 1)
caracteres(indice) = Chr(Asc(caracteres(indice)) + valornumerico)
encryptar = encryptar & caracteres(indice)
Next indice
Return encryptar

end function

El código para desencriptar es igual, pero la variable "valornumerico" en lugar de agregarse se resta.

public function desencriptar()

Dim indice As Integer = 1
Dim longitud As Integer = 0
Dim valornumerico As Integer = 1
Dim desencryptar As String = ""


longitud = Len(Trim(TextBox2.Text))
Dim caracteres(longitud) As String
For indice = 1 To longitud
caracteres(indice) = Mid(TextBox2.Text, x, 1)
caracteres(indice) = Chr(Asc(caracteres(indice)) - valornumerico)
desencryptar = desencryptar & caracteres(indice)
Next indice
Return desencryptar

end function

El código lo único que hace es tomar el valor en ASCII de cada caracter dentro del textbox y le suma una cantidad determinada, devolviendo los valores convertidos en una cadena encriptada.
El valor que necesitan cambiar es el de la variable "valornumerico" que es el que determinará el valor que se agregará al caracter.

Recomiendo que tengan una tabla ASCII al lado a la hora de incrustar este código en su sistema, ya que si le dan un valor demasiado grande a "valornumerico" terminará marcando un error de desbordamiento. El valor convertido (caracter ASCII + variable) no debe sobrepasar el valor de 255, que es el máximo de la tabla ASCII.

Este es el código completo como puede incrustarse dentro del módulo (con sus ligeras correciones para mi uso personal).

Dim x As Integer = 1
Dim l As Integer = 0
Dim c As Integer = 37
Public crypt, dcrypt, txtbox1, txtbox2 As String
Public flag1 As Boolean = False
Public Function encrypt()
x = 1
Try
flag1 = False
crypt = ""
l = Len(txtbox1.Trim)
Dim caracteres(l) As String
For x = 1 To l
caracteres(x) = Mid(txtbox1, x, 1)
caracteres(x) = Chr((Asc(caracteres(x)) - c) * 3)
crypt = crypt & caracteres(x)
Next x
Return crypt
Catch
MessageBox.Show("Insertó un caracter no válido. Favor de intentar de nuevo", _
"Error de código", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
flag1 = True
End Try
End Function
Public Function decrypt()
x = 1
l = (txtbox2.Trim.Length)
Dim caracteres(l) As String
dcrypt = ""
For x = 1 To l
caracteres(x) = Mid(txtbox2, x, 1)
caracteres(x) = Chr((Asc(caracteres(x)) / 3) + c)
dcrypt = dcrypt & caracteres(x)
Next x
Return dcrypt
End Function

Desde cualquier formulario se puede hacer llamada a la función encrypt o decrypt (según sea el caso). La cadena a encriptar sólo se necesitan agregar a la variable txtbox1 y la que se va a desencriptar se agrega a txtbox2. En este caso el valor que utilice para alterar el caracter ASCII fue 37, haciendo la pequeña modificación al código para que en lugar de sólo sumar o restar éste ahora además se multiplique o divida por 3 para dar la cadena final.

Como ven, el código se puede modificar fácilmente a gusto del programador para que tenga mayores niveles de encriptación, o simplemente sea un código personalizado.

El código fue 100% programado por su servidor, y lo pongo a disposición de cualquiera que guste utilizarlo o modificarlo a su antojo. Sólo pido que si va a ser publicado en otro lado se respete la fuente.


KobraSoft® 2006

No hay comentarios.:

 

Visitante número:
ContactosPensionesTiendasCampingPracticas