Título: cifrar/codificar datos Publicado por: {_The_Alwar_} en 17 Mayo 2005, 19:30 pm Hola
Estoy haciendo una aplicacion cliente/servidor y queria saber como puedo o que tengo que hacer para codificar o cifrar los datos que van de uno a otro, no se si uso bien los terminos, en definitiva yo quiero proteger los datos. Título: Re: cifrar/codificar datos Publicado por: sch3m4 en 17 Mayo 2005, 19:58 pm Aquí te pongo dos funciones ;)
Código: '////////////////////////////////////////////////////////////////////////////////// Código: '////////////////////////////////////////////////////////////////////////////////// Básicamente lo que hace es ir transformando los caracteres, les coje el código ascii y lo convierte en 18 caracteres ascii menos para cifrar, y les suma esos 18 para descifrar. Es un algoritmo muy básico pero espero que te sirva. Título: Re: cifrar/codificar datos Publicado por: coolbrain en 17 Mayo 2005, 20:20 pm Aqui te mando un ejemplo que hice para un grupo de news de programacion. Es un modulo de clase y aqui se gestiona tanto envio como recepción. En el código completo escribi otro modulo para desmontar un archivo y transmitirlo por bloques de 64 bits, convertia los caracteres a hex, para poder usar codigos de retorno y dividir los bloques. Cada vez que enviaba un bloque, antes del bloque iba la posicion del archivo, asi pues puedes resumir el archivo y reanudarlo posteriormente. Con este modulo de echo ya estas cifrando la transmisión puesto que no la mandas en el formato que usan normalmente los servidores ftp. Pero siempre puedes hacer un XOR del valor con una cadena que seria la clave de encriptacion. Si tienes alguna duda o quieres verlo completo, tendreis que decirme donde lo subo , para que otros puedan ver el codigo completo, ni tengo web ni servidor ftp (solo pa mi :) )
Código: ' .................................................................. Título: Re: cifrar/codificar datos Publicado por: coolbrain en 17 Mayo 2005, 20:33 pm Lympex:
Citar Básicamente lo que hace es ir transformando los caracteres, les coje el código ascii y lo convierte en 18 caracteres ascii menos para cifrar, y les suma esos 18 para descifrar. Es un algoritmo muy básico pero espero que te sirva Lympex, esa funcion que usas para cifrar y descifrar no creo que sirva si vas a transferir datos que no sean alfanumericos. Piensa en el caso de que vayas a transferir un caracter ASCII de valor 0 que seria (a parte del 13) el vbcrlf o retorno de carro. Provocaria que el resultado fuese -18 y petaria. A mi me gusta mas la idea de usar XOR si conoceis el sistema binario XOR lo que hace es la negación de OR y el resultado es perfecta combinacion para cifrar. Por ejemplo: Un codigo a OJO!!, podria ser: Código: ' cuidado que esto lo estoy haciendo sobre la marcha Si ponemos: Código: dim mipass as string Ya digo que lo hago a ojo, asi os lo currais vosotros, si necesitais que lo pruebe me lo decis. Un saludo Título: Re: cifrar/codificar datos Publicado por: {_The_Alwar_} en 17 Mayo 2005, 22:05 pm um.. Interesante, ya tengo para rato, el ejemplo de restar 18, es verdad que dara error si es un caracter cuyo ascii es menor a 18, yo eso ya lo utilizaba, pero como mucho le ponia 3 y rara vez petaba, pero una vez mi hermano vio un texto cifrado y el mismo texto descifrado, cogio lapiz y papel y lo revento :( espero que estos no los reviente nadie... jejej (dificil creo). Coolbrain, me podrias explicar tu codigo? esque no entiendo muy bien que cadena cojes para cifrar y que password
Título: Re: cifrar/codificar datos Publicado por: Unravel en 17 Mayo 2005, 22:49 pm 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() Código: Private Sub btndescifrar_click() Acuédate de instalar capicom.dll. Título: Re: cifrar/codificar datos Publicado por: coolbrain en 18 Mayo 2005, 08:42 am 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" Luego en el caso de que sea servidor hay que hacer la operacion inversa: Código: Case True ' ES SERVIDOR 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: 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 :) Título: Re: cifrar/codificar datos Publicado por: sch3m4 en 18 Mayo 2005, 16:32 pm Claro que peta :p pero si no se especifica qué tipo de caracteres se va a introducir... ;D
Título: Re: cifrar/codificar datos Publicado por: coolbrain en 18 Mayo 2005, 21:39 pm 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. ;) Título: Re: cifrar/codificar datos Publicado por: {_The_Alwar_} en 19 Mayo 2005, 23:22 pm jaja espero no acabar asi con este codigo... haber si este finde consigo algo... que con los examenes ay poco tiempo para practicar!
Título: Re: cifrar/codificar datos Publicado por: icisneros en 20 Mayo 2005, 00:26 am Yo tengo hecho un programa en VB que cifra y descifra en base 64, es algo largo el codigo, porque lo hice hace algun tiempo y emplee muchas variables, era y soy un novato, de todas formas funciona perfectamente, si te interesa dimelo y lo publico aquí.
Saludos!! Título: Re: cifrar/codificar datos Publicado por: Unravel en 20 Mayo 2005, 00:32 am Te refieres a que lo pasa a base64?
Eso no vale, pasarlo a b64 no es cifrarlo, es solamamente representarlo de otra forma. Como si lo pasas a hex, a binario, a Ascii, a unicode, etc. Título: Re: cifrar/codificar datos Publicado por: icisneros en 20 Mayo 2005, 22:34 pm Base 64 es un algoritmo de encriptacion como puede ser DES o MD5 lo unico que es reversible, pero mejor que eso de restarle 18 al numero ascii yo creo que es... ademas es algo mas seguro que todo eso.
Este algoritmo lo usa apache para la autentificacion básica y pgp en las firmas... de todas formas creo que para mandar datos cifrados para un troyano es suficiente, porque es mucho mas rapido que cualquier otro. A pesar de que no es muy seguro, mi oferta sigue en pie, si a alguien le interesa yo lo publico. Saludos!! Título: Re: cifrar/codificar datos Publicado por: Unravel en 22 Mayo 2005, 04:02 am Citar Base 64 es un algoritmo de encriptacion como puede ser DES o MD5 Un algoritmo de cifrado es una función que se la aplicas a un texto y lo hace ininteligible. Se trata de que nadie acceda al contenido de ese texto si no tiene la clave de descifrado. Base64 es una forma de codificación como la puede ser ASCII. Se usa para representar código por ejemplo binario en caracteres imprimibles. A grosso modo, cuando se le aplica a algo es para que puedas imprimirlo y verlo en pantalla sin que te salgan "huecos en blanco". Se usa en muchas partes, en las firmas de pgp por ejemplo, pero es solo para que te puedas imprimir la firma. Mira aquí, http://www.elhacker.net/base64.htm, tienes un codificador/descodificador de base64. Si le metes un código en base64 te lo descodifica, pero no te pide ninguna clave. DES si es un algoritmo de cifrado, depende de una clave, con ella cifras el texto, y solo con ella la descifras. MD5 es un algoritmo de hash. Un hash es una función que nos comprime un documento en una serie de bytes de longitud fija. Desde el resultado del hash no podemos llegar al documento original, por lo que no es un algortimo de cifrado. Un hash es, digamos, el resumen único del documento al que se le ha aplicado la función. Citar lo unico que es reversible Hombre, un algoritmo de cifrado se trata de que sea reversible.Citar pero mejor que eso de restarle 18 al numero ascii yo creo que es... ademas es algo mas seguro que todo eso. Que vá, por lo menos restando 18 tienes que adivinar que son 18 y no 19 ni 17. Con base64 no hay que adivinar nada. No sé si se ve claro ahora la diferencia entre codificación, cifrado y hash, espero que sí. Estos son conceptos que normalmente la gene no tiene muy claros. Míratelo con detenimiento y si te surge alguna duda, pues para eso estamos, para resolverlas. Salu2. Título: Re: cifrar/codificar datos Publicado por: icisneros en 24 Mayo 2005, 00:36 am Llevas razon asi que me retracto, yo soy uno de "esos" que no tenia clara la diferencia entre codificar y cifrar, no lo habia asimilado tan bien como ahora, gracias por la explicación...
Con la ilusion que tenia yo por que habia programado el programa yo solo, haciendo todas las funciones y sin copiar nada... :( Pero bueno, para resolver los datos de autentificacion básica de Apache me sirve eh!! xDDD Al menos me sirvio como ejercicio de programacion, de todas formas si a alguien le interesa, que me lo diga... Saludos!! |