Que tal amigo, saludos, en cuanto a la encriptación te puedo ayudar con las siguientes funciones.
Las hice hace algún tiempo y encripta en AES (Advanced Encryption Standard), lo que hace una funcion es encriptar y la otra desencriptar, una cadena de texto con el método AES, requiere de 2 llaves 1 pública o vector que
debe ser de 16 posiciones (puede ir hardcoded o embebida en tu código sin ningún problema) y la llave privada (que es la que deberan de ingresar) que
debe ser forzosamente de 32 posiciones; para lo cual te adjunto el código para crear un hash MD5 que crea dicho texto a 32 posiciones a partir de un texto de cualquier número de caracteres, las funciones estan documentadas y explicadas pero si tienes alguna duda, puedes preguntarme
nota: el numero de posiciones por lo que entiendo, son por cuestiones del estandar
Código vb:
Ver original''' <summary>
''' Encripta una cadena de texto mediante el método AES (rijndael)
''' </summary>
''' <param name="Texto">Cadena de texto a encriptar de tipo String </param>
''' <param name="Key">Llave Privada de tipo String, con la cual se encripatrá el texto; debe de tener sólo 32 Posiciones (Se recomienda usar Hashing MD5)</param>
''' <param name="Vector"> Llave Publica de tipo String , con la cual se encripatrá el texto; debe tener sólo 16 Posiciones </param>
''' <param name="Err">Variable Opcional Tipo String Por Referencia, que nos permite obtener los errores al encriptar si es que los hubiera </param>
Public Function Encriptar(ByVal Texto As String, ByVal Key As String, ByVal Vector As String, Optional ByRef Err As String = "") As String
Try
Dim BKey, BVector As Byte()
BKey = Encoding.ASCII.GetBytes(CrearHashMD5(Key)) 'llave de 32 Posiciones convertido a byte
BVector = Encoding.ASCII.GetBytes(Vector) 'Vector de 16 Posiciones convertido a byte
Dim inputBytes As Byte() = Encoding.ASCII.GetBytes(Texto)
Dim encripted As Byte()
Dim cripto As New RijndaelManaged
Using ms As New MemoryStream(inputBytes.Length)
Using objCryptoStream As New CryptoStream(ms, cripto.CreateEncryptor(BKey, BVector), CryptoStreamMode.Write)
objCryptoStream.Write(inputBytes, 0, inputBytes.Length)
objCryptoStream.FlushFinalBlock()
objCryptoStream.Close()
End Using
encripted = ms.ToArray()
End Using
Return Convert.ToBase64String(encripted)
Catch ex As Exception
Err = "Error al encriptar: " & ex.Message
End Try
Return ""
End Function
''' <summary>
''' Desencripta una cadena de texto mediante el método AES (rijndael)
''' </summary>
''' <param name="inputText">Cadena de texto a desencriptar de tipo String </param>
''' <param name="Key">Llave Privada de tipo String, con la cual se desencripatrá el texto; debe de tener sólo 32 Posiciones (Se recomienda usar Hashing MD5)</param>
''' <param name="Vector"> Llave Publica de tipo String , con la cual se desencripatrá el texto; debe tener sólo 16 Posiciones </param>
''' <param name="Err">Variable Opcional Tipo String Por Referencia, que nos permite obtener los errores al encriptar si es que los hubiera </param>
Public Function Desencriptar(ByVal inputText As String, ByVal Key As String, ByVal Vector As String, Optional ByRef Err As String = "") As String
Try
Dim BKey, BVector As Byte()
BKey = Encoding.ASCII.GetBytes(CrearHashMD5(Key)) 'llave de 32 Posiciones convertido a byte
BVector = Encoding.ASCII.GetBytes(Vector) 'Vector de 16 Posiciones convertido a byte
Dim inputBytes As Byte() = Convert.FromBase64String(inputText)
Dim resultBytes As Byte() = New Byte(inputBytes.Length - 1) {}
Dim CadDesencriptada As String = [String].Empty
Dim cripto As New RijndaelManaged()
Using ms As New MemoryStream(inputBytes)
Using objCryptoStream As New CryptoStream(ms, cripto.CreateDecryptor(BKey, BVector), CryptoStreamMode.Read)
Using sr As New StreamReader(objCryptoStream, True)
CadDesencriptada = sr.ReadToEnd()
End Using
End Using
End Using
Return CadDesencriptada
Catch ex As Exception
Err = "Error al desencriptar: " & ex.Message
End Try
Return ""
End Function
''' <summary>
''' Devuelve un valor tipo String del HASH MD5 de una cadena de entrada
''' </summary>
''' <param name="Texto">Cadena de texto de la cual se generará el Hash MD5</param>
Public Function CrearHashMD5(ByVal Texto As String) As String
'Crea un objeto codificado, para asegurar la codificación estandar del texto origen
Dim ASCIIenc As New ASCIIEncoding
Dim strReturn
'Recupera un arreglo de bites basados en el texto origen
Dim ByteSourceText() As Byte = ASCIIenc.GetBytes(Texto)
'Instancia el objeto proveedor de MD5
Dim Md5Hash As New MD5CryptoServiceProvider
'Computa el valor hash de valor origen
Dim ByteHash() As Byte = Md5Hash.ComputeHash(ByteSourceText)
'Ciclo para convertir el ByteHash resultante a cadena
For Each b As Byte In ByteHash
'Convierte Bytes a cadena
strReturn &= b.ToString("x2")
Next
'Regresa el hash MD5
Return strReturn
End Function
y estos son ejemplos de su uso
Código vb:
Ver originalEncriptar("Hola", 12345678901234561234567890123456, 1234567890123456, Me.LblErrores.Text)
Desencriptar("(cadena encriptada)", 12345678901234561234567890123456, 1234567890123456, Me.LblErrores.Text)
Recuerda ambas devuelven un valor string