cifrar/codificar datos

<< < (2/3) > >>

Unravel:
Usa el CAPICOM,
A diferencia de los anteriores algoritmos propuestos, con CAPICOM puedes elegir entre los que hay "profesionales", que ya no son juguetitos (RC4, RC5, DES, 3DES, 3DES112, etc.), y las funciones ya vienen implementadas.

Código:

Private Sub btncifrar_Click()
Dim EncryptedData
Set EncryptedData = CreateObject("CAPICOM.EncryptedData")

EncryptedData.Algorithm = 3   'TripleDES
EncryptedData.SetSecret "TUPASSWORD"
EncryptedData.Content = tbstring.Text

cifradoB64.Text = EncryptedData.Encrypt

End Sub

Código:

Private Sub btndescifrar_click()
Dim EncryptedData
Set EncryptedData = CreateObject("CAPICOM.EncryptedData")

EncryptedData.Algorithm = 3 'TripleDES
EncryptedData.SetSecret "TUPASSWORD"
EncryptedData.Decrypt cifradoB64.Text

tbstring.Text = EncryptedData.Content

End Sub


Acuédate de instalar capicom.dll.

coolbrain:
Separemos el codigo en el evento DataArrival y nos centramos en el caso de que no sea servidor. En este caso lo que hara sera ir leyendo el archivo hasta que llegue al final, y lo ira enviando por bloques (en esta caso de 8 bytes pero es a gusto del consumidor) . Para cifrar estos datos deberiamos recorrer la cadena 'CadenaEnviar' con la funcion que te pase de cifrar o la que mas te guste, asi pues la convertiria y pasaria a estar cifrada.
Código:

Case "EMPEZAR"
                        FPuntero = CLng(SubComando(1)) * 8 ' pone el puntero donde va a empezar
                        Do While FHex.Fichero(FPuntero, CadenaEnviar)
                            If WS.State <> 7 Then Cancelar = True: Exit Do
                            WS.SendData CStr(FPuntero) & "=" & CadenaEnviar & vbCrLf
                            FPuntero = FPuntero + 8
                            RaiseEvent Progreso(CInt((FPuntero * 100) / FHex.TArchivo))
                            If Cancelar Then Exit Do
                            DoEvents
                        Loop
                        If Not Cancelar Then
                            WS.SendData CStr(FPuntero) & "=" & CadenaEnviar & vbCrLf
                            RaiseEvent Completado
                        Else
                            RaiseEvent Mensaje("Cancelado por el usuario")
                            WS.Close
                            RaiseEvent Conexion(False)
                        End If
                End Select

           
 
Luego en el caso de que sea servidor hay que hacer la operacion inversa:
Código:

Case True ' ES SERVIDOR
                Select Case SubComando(0)
                    Case "FICHERO"
                            RutaFichero SubComando(1)
                            TamañoArchivoS = SubComando(2)
                            RaiseEvent RecibiendoDatos(iFichero, TamañoArchivoS)
                            WS.SendData "EMPEZAR=" & CStr(FHex.TArchivo \ 8) & vbCrLf ' manda el bloque
                            'donde debe empezar a transmitir
                    Case Else
                        RaiseEvent Progreso(CInt(CLng((SubComando(0)) * 100) / TamañoArchivoS))
                        If Not FHex.Fichero(CLng(SubComando(0)), SubComando(1)) Then
                            RaiseEvent Completado
                        End If
                End Select


Lo que es diferente es que la cadena que recibimos viene en una array 'SubComando' pues al recibir los datos se divide dos veces la cadena para saber varias cosas. Si los datos recibidos acaban de llegar o ya estaban llegando y tengo que resumirlos y tambien la posicion del archivo donde tengo que pegar ese bloque. Tendriamos que descifrar 'SubComando(1)'.

Los datos para que veas un ejemplo practico seria asi:

Código:

Supongamos que queremos enviar el archivoA y es un texto plano:

ArchivoA:"HOLA"

El envio seria asi mas o menos:

Se envia "FICHERO" Nombre y tamaño
se envia "EMPEZAR"
Do while not FinArchivo
   se van enviando los caracteres "HOLA"
   convertidos a hex
loop


Espero haberme explicado bien.  Piensa que el tema de los eventos es complicado. Se ha de estructurar y pensar muy bien cuando haces una aplicacion cliente / servidor. Porque sino podrias perder eventos y volverte loco :)

sch3m4:
Claro que peta :p pero si no se especifica qué tipo de caracteres se va a introducir...  ;D

coolbrain:
Ya vamos, pues si resulta que al final si que se van a usar el que use la funcion acabara como tu avatar, dandose cabezazos contra el pc  ;D

A mi me gusta pulir bien las cosas y aun asi siempre hay algo que o queda mal o no funciona como esperas, pero hay que ser cuidadoso con estas cosas , porque si el programa se hace cada vez mas y mas grande, imaginate para encontrar el bug.  ;)

{_The_Alwar_}:
jaja espero no acabar asi con este codigo... haber si este finde consigo algo... que con los examenes ay poco tiempo para practicar!

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior