2011-10-17 12 views
5

Ho bisogno di un algoritmo (qualsiasi linguaggio di programmazione) per testare la vitalità con un algoritmo di scalata per rompere un cifrario per una sfida crittografica. L'algoritmo dovrebbe verificare quanto è probabile che una decrittazione casuale (senza spazi) sia un testo inglese (che fornisce anche punti per parole ancora incomplete!) O solo una sequenza casuale di caratteri.Rilevamento lingua forza bruta

Ho provato con diversi algoritmi che ho sviluppato ma non erano così buoni.

La mia ricerca:

Un progetto crypto enigma M4 (http://www.bytereef.org/m4_project.html) utilizza le statistiche Sinkov, che voglio usare, anche.

L'unica cosa che ho trovato era un documento di «quebra -pedra», un framework Java che include l'analisi del peso-registro Sinkov che sto cercando.

http://www.google.com/m?client=ms-android-samsung&source=android-home#q=Quebra-pedra+framework+java

Ma non ho trovato dove scaricare il quadro. Inoltre non ho trovato alcuna implementazione o descrizione del test Sinkov.

Sarei felice per qualsiasi suggerimento. Grazie.

risposta

5

Non so le statistiche di Sinkov, ma i modelli linguistici dall'elaborazione del linguaggio naturale possono fare esattamente ciò che si desidera, valutando il testo in base alla somiglianza con l'inglese.

Ho scritto un semplice carattere bigram uno qui, dovrebbe essere ragionevolmente facile da seguire.

https://github.com/rrenaud/Gibberish-Detector

+0

Grazie per il tuo commento. Non conoscevo le catene di Markov, ma avevo la stessa idea di calcolare il punteggio per i bigram. Il problema che avevo con la mia formula era che la distanza tra testo reale e immondizia era molto piccola. Guarderò il tuo codice per saperne di più sulle catene di Markov. –

+0

Il mio collega ha tradotto il progetto di rrenaud in Java, nel caso questo sia utile a chiunque https://github.com/paypal/Gibberish-Detector-Java – Eyal

Problemi correlati