Foro de elhacker.net

Seguridad Informática => Criptografía => Mensaje iniciado por: Glezo en 13 Octubre 2010, 01:03 am



Título: cifrado César... elemental... ¿o no tanto?
Publicado por: Glezo en 13 Octubre 2010, 01:03 am
Buenas a todos!

Es la primera vez que comento en este subforo.

La cosa es que me estaba picando unas clases en c++ sobre distintos tipos de cifrados, y, cómo no, comencé por el César, todo un juguete y una reliquia.

  Como era evidente, también he estado haciendo unos métodos para romper el cifrado por fuerza bruta. Para ello, pruebo todos los posibles desplazamientos a piñón (en cifrados césar "sale más barato" ir a fuerza bruta que pensar en heurísticas). Pues bien: tomando por ejemplo el relato de Poe, sea mi texto plano "unbuenvasoenlahosteriadelobispo". Nótese que no tiene espacios en blanco.

  Iré probando todos los desplazamientos, hasta que uno de ellos me devuelva el texto "unbuenvasoenlahosteriadelobispo".

 PROBLEMA: teniendo una clase Dictionary, que no es más que una lista enorme de palabras y una interfaz, que entre otros métodos, tiene
 bool wordBelongs(char* aWord);
 bool isPrefix(char* aWord);

 ¿a alguien se le ocurre un algoritmo eficiente, eficaz y que no arroje falsos positivos para decidir si éste es un texto perteneciente al lenguaje? (lo de los falsos positivos es porque en el diccionario aparecen "a","b","c"..."z" como palabras, lo cual no me parece descabellado. Y entiéndase lenguaje como el cierre de kleen del conjunto Dictionary)

Gracias a todos.


Título: Re: cifrado César... elemental... ¿o no tanto?
Publicado por: WestOn en 13 Octubre 2010, 01:43 am
Buenas, pues para evitar falsos positivos comprueba que todas las palabras existan en tu diccionario, si no existe alguna que no arroje el resultado y siga probando.

Porque puedes incluir en tu variable un espacio, ' ', y este será también sustituido por el carácter que le corresponda cuando cifres, si lo haces sin espacios buff ni idea, yo usaría espacios  :xD

En el caso como dices que no hay espacios, ¿porqué será? :P, pues te diria que comprobar una a una pero lo mismo se acaba el mundo antes xD, suerte.

Saludos


Título: Re: cifrado César... elemental... ¿o no tanto?
Publicado por: Glezo en 13 Octubre 2010, 14:11 pm
Me temo que no te he entendido o no me he explicado o probablemente ambos

 El único algoritmo que se me ha ocurrido es, para una cadena de longitud n, añadir 1 espacio, permutar la cadena y ver si pertenece al lenguagje, añadir 2 espacios, permutar la cadena y ver si pertence al lenguaje,.... y añadir n-1 espacios permutar y ver si pertenece, pero es una gansada de cómputo.
Además, de ahí venía el problema de los falsos positivos: si tiendo a separar todas las letras por espacios me dirá que es un texto que de seguro pertenece al lenguaje.

 La gracia del cifrado césar es que no hay que cifrar los espacios (se omiten), porque si cifras también los espacios te lo crackean en menos de 5 minutos.