Pergunta

Eu quero encontrar (não gerar) cordas 2 de texto de tal forma que, após a remoção de todas as letras não e ucasing, uma corda pode ser traduzido para o outro por substituição simples.

A motivação para isso vem de um projeto que eu conhecida de que está testando métodos para atacar cifras via distribuições de probabilidade. Eu gostaria de encontrar um grande e coerente de texto simples que, uma vez criptografado com uma cifra de substituição simples, pode ser descodificada para outra coisa que também é coerente.

Isso acaba como 2 partes, encontrar as mais longas tais cordas em um corpus, e conseguir que corpus.


A primeira parte parece-me ser amável a algum tipo de ataque com uma B-árvore introduzidos fora da cadeia depois uma substituição que faz com que a seqüência de primeira ocorrências seqüencial.

HELLOWORLDTHISISIT
1233454637819a9b98

Um pouco de otimização baseado em saber o valor máximo e comprimento da corda com base em cada profundidade da árvore eo resto é apenas codificação.


A outra parte seria um pouco mais envolvidos; como gerar um grande corpus de texto para pesquisar? algum tipo de aranha internet parece ser a abordagem ideal, uma vez que teria acesso à maior quantidade de texto, mas como tira-lo apenas para o texto?

A pergunta é; Todas as ideias sobre como fazer isso melhor?


Edit: a cifra que estava sendo usado é um insanamente básica 26 carta substituição cifra

.

P.S. este é mais um experimento de pensamento, em seguida, um projeto real provável para mim.

Foi útil?

Solução

Há 26! diferentes cifras de substituição. Que trabalha fora de um pouco mais de 88 pedaços de escolha:

>>> math.log(factorial(26), 2)
88.381953327016262

A entropia de texto em Inglês é algo como 2 bits por caractere, pelo menos. Assim, parece-me que você não pode razoavelmente esperar para encontrar passagens de mais de 45-50 caracteres que são acidentalmente equivalente ao abrigo substituição.

Para a grande corpus, há o Projeto Gutenberg e Wikipedia, para um começo. Você pode baixar um dump de todos os arquivos XML da Wikipedia Inglês de seu site.

Outras dicas

Eu acho que você está pedindo um pouco demais para gerar uma substituição que também é "coerente". Isso é um problema AI para o algoritmo de criptografia para descobrir o que o texto é coerente. Além disso, quanto mais tempo o seu texto é o mais complicado será para criar um resultado "coerente" ... rapidamente chegando a um ponto onde você precisa de uma "chave", desde que o texto que está sendo criptografado. Assim, derrotando a finalidade de criptografá-los em tudo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top