Autor
|
Tema: cifrado César... elemental... ¿o no tanto? (Leído 5,808 veces)
|
Glezo
Desconectado
Mensajes: 82
|
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.
|
|
« Última modificación: 13 Octubre 2010, 01:33 am por Glezo »
|
En línea
|
|
|
|
WestOn
Desconectado
Mensajes: 272
El testamento Maya...
|
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 En el caso como dices que no hay espacios, ¿porqué será? , pues te diria que comprobar una a una pero lo mismo se acaba el mundo antes xD, suerte. Saludos
|
|
|
En línea
|
En mi cabeza existe una barrera espacio-tiempo de 4cm³. ¿Alguien sabe como eliminarla?.
|
|
|
Glezo
Desconectado
Mensajes: 82
|
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.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con una modificacion del cifrado cesar en c++( Ubuntu ).
Criptografía
|
mat.marchantt
|
7
|
8,623
|
12 Julio 2011, 22:38 pm
por Died
|
|
|
Qué preferis: Cifrado cesar o Ensalada cesar?
Foro Libre
|
Castg!
|
6
|
4,939
|
1 Agosto 2011, 22:45 pm
por scr21
|
|
|
[+] mCesar - Cifrado Cesar
Programación Visual Basic
|
|SMT|
|
1
|
2,309
|
8 Septiembre 2013, 16:09 pm
por noele1995
|
|
|
cifrado cesar en c
Programación C/C++
|
kikian94
|
6
|
10,993
|
29 Octubre 2013, 15:01 pm
por kikian94
|
|
|
[Perl] Ejemplo de Cifrado Cesar
Scripting
|
BigBear
|
0
|
2,124
|
28 Noviembre 2014, 17:48 pm
por BigBear
|
|