ayuda estoy haciendo un encriptador

Iniciado por Arconte, 16 Junio 2012, 05:53 AM

0 Miembros y 1 Visitante están viendo este tema.

Arconte

estoy haciendo un encriptador mas o menos es asi: cambia la "A" por la "Z", la "B" por la "W" y asi sucesivamente pero el problema es que no tengo forma de comprobar que un archivo este correctamente escrito, ejemplo: tengo el texto "HOLA MUNDO" y despues de cifrado resulta en "POWE IUTEG", al revertir el "POWE IUTEG" saldria el "HOLA MUNDO", pero si el archivo "POWE IUTEG" fuera modificado por ejemplo en "POWE IUTEE" el resultado seria "HOLA  MUNDZ" distinto al original, entonces ¿como haria para comprobar que el archivo esta escrito correctamente?, lo  que quiero hacer igual a lo que hace el winrar que si el archivo fue modificado el winrar te muestra un mensaje "el volumen esta dañado" y no descomprime nada porque el archivo fue modificado.

busco alguna idea de metodo.

engel lex

podrías hacer una suma de comprobación (un md5) del texto a cifrar y cifrarlo con el resto del archivo, cuando se descifre, haces un md5 al texto descifrado y lo comparas, si es igual, el texto no fue modificado
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Flamer

hola Arconte un ejemplo podrias sumar todos los caracteres de "HOLA MUNDO" y encriptas ejemplo:
           H=72
           O=79
           L=76
           A=65
             =32
           M=77
           U=85
           N=78
           D=68
           O=79
----------------------
   SUMA=711

y cuando desencriptes el resultado de la suma de lo descifrado te tiene que dar eso
saludos flamer

HdM

Buenas.

@Flamer, el problema de lo que comentas es que con un simple cambio en las posiciones de los caracteres, el texto es modificado, pero la suma sigue manteniendo el mismo valor que la del texto inicial. Incluso cambiando caracteres, se podría dar el caso que la suma siguiese siendo la misma.

La opción de hash de Engelx me parece buena.

Saludos.

- Nice to see you again -

Flamer

hola Bulld0z3r aver si entendi lo que dise Engelx:
quiere que el archivo a cifrar pase por una serie de operaciones matematicas de comprovacion e incriptacion me suena difisil
algo mas sencillo seria que con una palabra clave(contraseña) lo desencripte
estaria bien postear un codigo horita nose me ocurre nada
saludos flamer

DarkMatrix

La solucion mas simple creo que es la que propone engelx, pero con CRC32 creo que es suficiente... Antes de cifrar primero genera el CRC32 del texto original, luego cifra la cadena y por ultimo une la cadena cifrada junto con el CRC32 (8 digitos), luego cuando decodifique la cadena solo tiene que decodificar toda la cadena menos los 8 digitos del CRC32, y generar otro CRC32 para la cadena decoficada, si coincide el CRC32 de la cadena decodificada con el CRC32 Original es porque no se modifico.

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix

engel lex

para ser sincero elegí md5 es porque es muy usado XD y se consiguen por ahí librerías en internet que te hacen todo el proceso y listo... 5 el proceso del hash md5 es relativamente ligero, a demás... está en el foro de visual basic XD asi que asumo que el md5 no lo está haciendo a mano XD :P

por otro lado DarkMatrix, creo que la suma de comprobación debería ir cifrada :P porque si u atacante comprende que esa es la suma de comprobación, podría jugar modificandola o usarla para tratar de sacar algo de info, pero ya quedaría a escogencia de Arconte

por otro lado
Arconte, por que estás escogiendo un método tan débil de encriptacion? estás haciendo algo como una maquina enigma por lo que veo, es solo por juego/trabajo? porque si es por real seguridad usate algoritmos pesados (increíblemente no me viene el nombre de ninguno a la mente XD pero hay muchos como el que usa https) que están hechos para que no sean resolvibles con ataques modernos ni demás...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

DarkMatrix

Fijate angels, los hash son irreversibles hasta donde yo se... de modo que de un hash no puedes sacar info que sea util... la unica forma seria generar cadenas hasta encontrar un hash determinado, cosa que puede llevar mucho tiempo... ademas si cifra el hash y por casualidad el usuario no modifica la cadena si no el hash cifrado caeriamos en lo mismo porque el programa no sabria si fue modificado o no.

En mi ejemplo propuse esto: Cadena de Ejemplo ( Hola Mundo )

Primero se genera el CRC32 de la cadena original = 22436ED2
Luego se codifica la cadena con el algoritmo que sea, en este ejemplo ROT13 = Ubyn Zhaqb
Luego el resultado final sera la cadena cifrada + CRC32 de la cadena original = Ubyn Zhaqb22436ED2

Cuando se quiera descifrar y ver si se modifico el archivo simplemente hay que comprobar que el CRC32 de la cadena decifrada sea igual que el plasmado en el archivo, y en caso de que se modifique el CRC32 en si, esta condicion siempre sera false. Pongamos un ejemplo donde no se modifico el archivo:

Primero se decifra la cadena, sin tomar en cuenta los ultimos 8 digitos que son el hash de la cadena original : Ubyn Zhaqb = Hola Mundo
Luego se genera el CRC32 de la cadena decifrada : Hola Mundo = 22436ED2
Ahora comparamos ambos hash y si son iguales el archivo no fue modificado : 22436ED2 = 22436ED2 = True

Ahora un ejemplo donde si fue modificado :

Supongamos que modifique el archivo de esta forma : Uwyn Zhjqb22436ED2
Primero se decifra la cadena, sin tomar en cuenta los ultimos 8 digitos que son el hash de la cadena original : Uwyn Zhjqb = Hjla Muwdo
Luego se genera el CRC32 de la cadena decifrada : Hjla Muwdo = 7B23B362
Ahora comparamos ambos hash y si son iguales el archivo no fue modificado : 22436ED2 = 7B23B362 = False ( por lo tanto fue modificado )

Igualmente sucedera si modificamos el hash, al momento de comprarar dara false, a menos que de antemano sepamos el hash de la cadena (modificada) decodificada y lo plasmemos en el archivo cosa que veo dificil si se usa un buen cifrado.

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix

Arconte

hola, en realidad no estoy usando ese metodo debil, solo fue de ejemplo para explicar el problema, imaginen que tengo la cadena "BUENOS DIAS", que luego la cifro vamos a suponer que resulta "QWERTY JHGF", ahora un virus podria corromper (sobreescribir) parte del archivo y al desencriptarlo no diria "BUENOS DIAS" sino cosas sin sentido por ejemplo "MNSDGF ALKS" ahora imaginen que lo que se cifrar no es un texto sino un ejecutable , al intentar abrirlo podria ser peligroso porque ya esta corrompido a menos que el encriptador/desencriptador pueda detectar que el archivo esta corrompido y avisarle al usuario que no se puede descifrar porque el archivo fue dañado o corrompido , mencione al winrar porque eso es lo que hace te dice que el "volumen esta dañado y no se puede descomprimir/descifrar", estoy checando lo de md5 y CRC32, creo que CRC32  es el metodo que usa winrar, ahora me encargare de pasar el algoritmo a visual basic.

gracias por la ayuda.

HdM

Buenas.

Citarestoy checando lo de md5 y CRC32, creo que CRC32  es el metodo que usa winrar, ahora me encargare de pasar el algoritmo a visual basic.

Échale un vistazo a este hilo: http://foro.elhacker.net/programacion_visual_basic/src_self_crc32_check_01_poc-t351610.15.html


Saludos.

- Nice to see you again -