Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/12/2012, 16:21
Cristo_
 
Fecha de Ingreso: octubre-2008
Mensajes: 61
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Envio peticion y encriptacion

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
  1. ''' <summary>
  2.    ''' Encripta una cadena de texto mediante el método AES (rijndael)
  3.    ''' </summary>
  4.    ''' <param name="Texto">Cadena de texto a encriptar de tipo String  </param>
  5.    ''' <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>
  6.    ''' <param name="Vector"> Llave Publica de tipo String , con la cual se encripatrá el texto; debe tener sólo 16 Posiciones </param>
  7.    ''' <param name="Err">Variable Opcional Tipo String Por Referencia, que nos permite obtener los errores al encriptar si es que los hubiera  </param>
  8.    Public Function Encriptar(ByVal Texto As String, ByVal Key As String, ByVal Vector As String, Optional ByRef Err As String = "") As String
  9.         Try
  10.             Dim BKey, BVector As Byte()
  11.             BKey = Encoding.ASCII.GetBytes(CrearHashMD5(Key)) 'llave de 32 Posiciones convertido a byte
  12.            BVector = Encoding.ASCII.GetBytes(Vector)         'Vector de 16 Posiciones convertido a byte
  13.  
  14.             Dim inputBytes As Byte() = Encoding.ASCII.GetBytes(Texto)
  15.             Dim encripted As Byte()
  16.             Dim cripto As New RijndaelManaged
  17.  
  18.             Using ms As New MemoryStream(inputBytes.Length)
  19.                 Using objCryptoStream As New CryptoStream(ms, cripto.CreateEncryptor(BKey, BVector), CryptoStreamMode.Write)
  20.                     objCryptoStream.Write(inputBytes, 0, inputBytes.Length)
  21.                     objCryptoStream.FlushFinalBlock()
  22.                     objCryptoStream.Close()
  23.                 End Using
  24.                 encripted = ms.ToArray()
  25.             End Using
  26.  
  27.             Return Convert.ToBase64String(encripted)
  28.         Catch ex As Exception
  29.             Err = "Error al encriptar: " & ex.Message
  30.         End Try
  31.         Return ""
  32.  
  33.     End Function
  34.     ''' <summary>
  35.    ''' Desencripta una cadena de texto mediante el método AES (rijndael)
  36.    ''' </summary>
  37.    ''' <param name="inputText">Cadena de texto a desencriptar de tipo String  </param>
  38.    ''' <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>
  39.    ''' <param name="Vector"> Llave Publica de tipo String , con la cual se desencripatrá el texto; debe tener sólo 16 Posiciones </param>
  40.    ''' <param name="Err">Variable Opcional Tipo String Por Referencia, que nos permite obtener los errores al encriptar si es que los hubiera  </param>
  41.    Public Function Desencriptar(ByVal inputText As String, ByVal Key As String, ByVal Vector As String, Optional ByRef Err As String = "") As String
  42.         Try
  43.             Dim BKey, BVector As Byte()
  44.             BKey = Encoding.ASCII.GetBytes(CrearHashMD5(Key))       'llave de 32 Posiciones convertido a byte
  45.            BVector = Encoding.ASCII.GetBytes(Vector)               'Vector de 16 Posiciones convertido a byte
  46.            Dim inputBytes As Byte() = Convert.FromBase64String(inputText)
  47.             Dim resultBytes As Byte() = New Byte(inputBytes.Length - 1) {}
  48.             Dim CadDesencriptada As String = [String].Empty
  49.             Dim cripto As New RijndaelManaged()
  50.             Using ms As New MemoryStream(inputBytes)
  51.                 Using objCryptoStream As New CryptoStream(ms, cripto.CreateDecryptor(BKey, BVector), CryptoStreamMode.Read)
  52.                     Using sr As New StreamReader(objCryptoStream, True)
  53.                         CadDesencriptada = sr.ReadToEnd()
  54.                     End Using
  55.                 End Using
  56.             End Using
  57.             Return CadDesencriptada
  58.         Catch ex As Exception
  59.             Err = "Error al desencriptar: " & ex.Message
  60.         End Try
  61.         Return ""
  62.     End Function
  63.     ''' <summary>
  64.    ''' Devuelve un valor tipo String del HASH MD5 de una cadena de entrada
  65.    ''' </summary>
  66.    ''' <param name="Texto">Cadena de texto de la cual se generará el Hash MD5</param>
  67.    Public Function CrearHashMD5(ByVal Texto As String) As String
  68.         'Crea un objeto codificado, para asegurar la codificación estandar del texto origen
  69.        Dim ASCIIenc As New ASCIIEncoding
  70.         Dim strReturn
  71.         'Recupera un arreglo de bites basados en el texto origen
  72.        Dim ByteSourceText() As Byte = ASCIIenc.GetBytes(Texto)
  73.         'Instancia el objeto proveedor de MD5
  74.        Dim Md5Hash As New MD5CryptoServiceProvider
  75.         'Computa el valor hash de valor origen
  76.        Dim ByteHash() As Byte = Md5Hash.ComputeHash(ByteSourceText)
  77.         'Ciclo para convertir el ByteHash resultante a cadena
  78.        For Each b As Byte In ByteHash
  79.             'Convierte Bytes a cadena
  80.            strReturn &= b.ToString("x2")
  81.         Next
  82.         'Regresa el hash MD5
  83.        Return strReturn
  84.     End Function

y estos son ejemplos de su uso
Código vb:
Ver original
  1. Encriptar("Hola", 12345678901234561234567890123456, 1234567890123456, Me.LblErrores.Text)
  2.  
  3. Desencriptar("(cadena encriptada)", 12345678901234561234567890123456, 1234567890123456, Me.LblErrores.Text)

Recuerda ambas devuelven un valor string