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. victor dice:

    como llamo a la función encriptar

  2. MAXIMO TORO dice:

    Como puedo aumentar la cantidad de caracteres encriptados

  3. Juan Carlos dice:

    Excelente aporte Victor. Me sirvió.

  4. juan dice:

    Muchas gracias me has salvado pues mañana hay examen

  5. Lo primero es guardar ambos métodos en una clase por ejemplo puedes llamarla Util.

    entonces en el evento onclick, puedes hacer lo siguiente

    Dim dialog = New FolderBrowserDialog()
    Dim encriptado As String
    dialog.SelectedPath = «C:\Prueba»
    dialog.Description = «Seleccione directorio»

    If (dialog.ShowDialog() = DialogResult.OK) Then

    encriptado = Util.Encriptar(dialog.SelectedPath)

    End If

    Donde encriptado tiene el valor que necesitas, no le asigno funcionalidad ya que tu sabes para que lo usaras, luego puedes tomar este mismo valor y aplicarle la funcion Desencriptar.

    Saludos

  6. juan dice:

    hola amigo y gracias por responder pero creo que no me di a entender bien lo que necesito es una boton que al darle click te despliege la ventanita para elegir el directorio y ya una ves seleccionado por el usuario lo encripte y ya otro boton que lo desencripte

    ya intente usar el FolderBrowserDialog.SelectedPath pero no abre la ventana y cuando por fin la abrio y selecione el directorio de prueba no me asigno la ruta a la bariable (directorio) ademas me gustaria que la bariable se quede asi permanentemente para que no sea necesario volver a elegir el directorio

    Me podrias generarme el codigo del boton Y GRACIAS disculpa las molestia jejejeje
    🙂

  7. Si necesitas encriptar solo la ruta del directorio utilizando la ventana correspondiente debería ser string directorio = Clase.Encriptar(FolderBrowserDialog.SelectedPath);

    Saludos

  8. juan dice:

    como aplico el metodo a un boton para que encripte un directorio claro obiamente abriendo una bentana para que sea seleccionado el directorio si alguien pude aydarme se lo agradeseria es que llevo con este problema ya 4 dias y ya es un dolor de dabeza GRACIAS!!!

  9. ALEX dice:

    AYUDA NECESITO SABER EL PROCESO DE ESTA FORMULA DE VISUAL BASIC:

    clave: Abs (Mid(1089583396).value,1,3)*789

    Rpta. Clave : 85212

    Necesito saber cual es el proceso para llegar a la respuesta.

    • Estimado creo que la función esta mal hecha ya que la función mid (Devuelve una cadena que a su vez contiene un número especificado de caracteres de una cadena) acepta como parámetros un string, y requiere al menos un parámetro de inicio.

      La función Mid debería quedar así = Mid(«1089583396»,1,3) o Mid((1089583396).ToString(),1,3) lo cual retornaría 108

      Luego la función abs pertenece a la librería Math y es un método estático por lo cual debería quedar asi Math.Abs(Mid(«1089583396»,1,3)) Asumiendo que el resultado de la primera es 108 quedaría de la siguiente manera Math.Abs(108), donde abs obtiene el valor absoluto osea 108.

      Para finalizar multiplicas este valor por 789 y el resultado es = 85212.

      Saludos

  10. Bastian dice:

    Una pregunta la contraseña debe ser solo 8 caracteres ni mas ni menos?

  11. erick dice:

    He visto animaladas, pero como la de Javier me agueváz!! jajajajaja…. Yo quiero saber si va a llover el 24 de diciembre del 2078, alguien me puede ayudar?

  12. javier dice:

    hola gente necesito ayuda necesito desencriptar este mensaje

    $1$b9b7fe7d39f3de43b42bc5e03388bf22

  13. VICTOR dice:

    me sirvió gracias

  14. A mi parecer poner como palabra clave la palabra a cifrar no es una buena opción debido a que al estar cifrada con el tiempo se puede olvidar la palabra cifrada y eso ocasionaría que descifrarla se vuelva un verdadero dolor de cabeza.

  15. Truco; Para evitar que les averigüen la palabra clave, dejen el mismo texto que van a encriptar como palabra clave. Si dejan una misma palabra como palabra clave para todas las encriptaciones, es mas fácil, que se las averigüen.