cifrar/codificar datos
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
[#] Página Siguiente
[*] Página Anterior