2016-10-21 2 views
0

나는 cypher 텍스트를 일반 텍스트로 바꾸고 싶습니다. 그러나 n이있을 수 있습니다! n은 문자 예를 들어인코딩 방법 대체 순열

의 수는 가능성

은 사이퍼 : [ a, b, c, d ]

일반 : [ x, y, z, m ]

는이 전 조합 중 하나가 올바른 일반 텍스트 확신한다고 가정 해 봅시다. 예제에서 나는 4가 있다는 것을 압니다! 가능한 일반 텍스트하지만 난 때문에 내 진짜 문제에서, 파이썬에서 그것을 계산해야 N 난 당신이 편지 주파수 분석을 할 필요가 코드 또는 알고리즘

+0

암호화 된 텍스트의 크기는 어느 정도입니까? 그 단 10 문자 만 힘들 때 –

+0

암호화 된 텍스트는 270 자이고, – eneski

답변

1

의 조각을 요청하고 10

입니다. 이 소스는 파이썬에서 주파수 분석이

https://inventwithpython.com/hacking/chapter20.html에 대해 당신이 튜토리얼의 소스 코드를 구현하면

당신이 다음이 일반 텍스트가됩니다 가정합니다

def test_solution(cypher,plaintext,encrypted_text): 
    tab = string.transtab(cypher,plaintext) 
    decrypted = encrypted_text.translate(tab) 
    return (englishFreqMatchScore(decrypted),plaintext, decrypted) 

tests = [test_solution(cypher,k,enc_text) for k in itertools.permutations(plain)] 
print "SOLUTION:",max(tests) 

메모를 작성할 수 있습니다이 기사를 읽고 영어가 되십시오 ... 문자 빈도가 언어마다 다를 수 있습니다 (적어도 생각합니다)

불행히도이 문제는 불행히도 np라고 생각합니다 ... 생각 해봐야 할 최고의 솔루션을 찾으려면 전체 솔루션 공간 (N이 평문 문자의 길이를 늘리면 문자가 더 많이 쓰여집니다 ...)