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
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
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?
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?
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.
el desencriptar me resulta texto vacio, entiendoq pongo la cadena encriptada y no me resulta el texto original.
Funciona bien dentro de un entorno de laboratorio, sin embargo llevando a la practica me dio muchos problemas en la ejecucion final
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
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)
Perfecto, funciono de una
no dije nada . ya esta . Saludos.
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 .
Funciona perfecto, a la primera, felicitaciones y muchas gracias.