Métodos para Encriptar y Desencriptar Vb.Net

En esta oportunidad presentamos 2 métodos para proteger los datos en sus desarrollos. Los métodos contienen una llave escrita en duro «qualityi» que es la que nos permite Encriptar y luego Desencriptar nuestros datos, si las llaves no coinciden no podrán utilizar ambos métodos por lo que es recomendable manejar esta llave como una variable global.

referencias
Imports System.Text
Imports System.Security.Cryptography

Método de Encriptación

Public Function Encriptar(ByVal Input As String) As String

  Dim IV() As Byte = ASCIIEncoding.ASCII.GetBytes("qualityi")'La clave debe ser de 8 caracteres
  Dim EncryptionKey() As Byte = Convert.FromBase64String("rpaSPvIvVLlrcmtzPU9/c67Gkj7yL1S5")'No se puede alterar la cantidad de caracteres pero si la clave
  Dim buffer() As Byte = Encoding.UTF8.GetBytes(Input)
  Dim des As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider
  des.Key = EncryptionKey
  des.IV = IV

  Return Convert.ToBase64String(des.CreateEncryptor().TransformFinalBlock(buffer, 0, buffer.Length()))

End Function

Método de Desencriptación

 Public Function Desencriptar(ByVal Input As String) As String

  Dim IV() As Byte = ASCIIEncoding.ASCII.GetBytes("qualityi") 'La clave debe ser de 8 caracteres
  Dim EncryptionKey() As Byte = Convert.FromBase64String("rpaSPvIvVLlrcmtzPU9/c67Gkj7yL1S5")'No se puede alterar la cantidad de caracteres pero si la clave
  Dim buffer() As Byte = Convert.FromBase64String(Input)
  Dim des As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider
  des.Key = EncryptionKey
  des.IV = IV
  Return Encoding.UTF8.GetString(des.CreateDecryptor().TransformFinalBlock(buffer, 0, buffer.Length()))

End Function

Saludos

También te podría gustar...

33 Respuestas

  1. brandon dice:

    Como puedo utilizar solo la función de desencriptar porque tengo una cadena ya encriptada y quiero saber el resultado y no me da amenos de que ingrese el mismo valor que se encripto

  2. Franco dice:

    buenos días estimado. Realicé la aplicación del procedimiento de manera exitosa. Pero, una consulta ¿Cómo hago para realizar una consulta global de información en una de las columnas de la base de datos?

    Por ejemplo: necesito extraer la información almacenada en un campo, pero, obviamente que la frase a buscar (la cual se encuentra cortada) por mas que la encripte no es la misma.

    ¿Tengo que desencriptar toda la columna para poder realizar la busqueda?

  3. Gustavo dice:

    Encripta perfecto, pero cuando quiero desencriptar me tira error de «Datos incorrectos». Probé cambiando Encoding.UTF8.GetString por Encoding.Default.GetString para que me tomara el del sistema operativo por defecto y es lo mismo. Estoy usando Visual Studio 2017 sobre Windows 10 y .NET Framework 4.5.1. ¿Alguna solución que me puedas brindar?

    • Iván dice:

      Hola, yo no soy quién creó esas funciones, pero lo he probado con tus mismas características y va bien. ¿Quizás estás desencriptando algo no encriptado? Porque si es así, te va a dar errores.

      Prueba a encriptar una cadena y esa misma cadena desencriptala, debe funcionar.

      Espero que te sirva, saludos.

  4. aldo zegarra dice:

    el desencriptar me resulta texto vacio, entiendoq pongo la cadena encriptada y no me resulta el texto original.

  5. Ismael dice:

    Funciona bien dentro de un entorno de laboratorio, sin embargo llevando a la practica me dio muchos problemas en la ejecucion final

  6. ana dice:

    como llamo a la funcion la he escrito en mi formulario en donde quiero encriptar lo que en mi textboxclave pongo y hago encriptar(txtclave.text) y no pasa nada

    • Diego Lopez dice:

      Tienes que hacerlo de la siguiente manera si lo vas a mostrar en el mismo textclave:
      -txtclave.text = encriptar(txtclave.text)

      O si lo piensas meter en una variable y luego usarlo, de esta forma:
      -Dim Varibale as string = encriptar(txtclave.text)

  7. Edu dice:

    Perfecto, funciono de una

  8. Adrián seimandi dice:

    no dije nada . ya esta . Saludos.

  9. Adrián seimandi dice:

    No me funciono , estoy en vb.net visual estudio 2010 fon framework 4 compilando y me tira «longitud no valida para una matriz o cadena de caracteres base 64 » y lo tengo copiado tal cual sin modificar nada . Que raro .

  10. Victor OAJ dice:

    Funciona perfecto, a la primera, felicitaciones y muchas gracias.