2014-12-28 3 views
-3

그래서 나는 할당을 받았고 시프트 암호에서 특정 키를 사용하여 암호화 된 문자열의 암호를 해독해야합니다. 그래서 생각의 흐름은 문자열에서 가장 일반적인 문자를 찾고 가장 일반적인 문자가 E이기 때문에 그 키를 찾습니다. 그리고 키를 얻을 때 텍스트를 해독합니다 (기본적으로 문자열의 각 문자는 isn .시프트 암호의 암호화 키를 찾는 방법은 무엇입니까?

  1. 내가에서 (가장 일반적인 문자가 후 또는 E 전의 경우는 나도 몰라, 그래서 모든 키를 작동하는 내 프로그램을 원하는 : - 't 공간 열쇠는 지금은 몇 가지 어려움에 직면 ASCII 차트) 그래서 나는 단지 기판 E를 답하고 대답을 얻을 수 없으며 그것이 작동하도록하기 위해해야 ​​할 수학적 것들을 이해할 수 없다.

  2. 또한 내가 알지 못하는 열쇠를 발견했을 때 예를 들어 A처럼 돌아가는 방법 오 Y는 원을하고 같은 도움을 줄 수

어쨌든 사람이 많이 감사하고 내가 정말 고급 명령에 대해 허용되지 않아 (하지만 난 내가 % 연산자의 생각을 내가 아마 알고 있다고 생각). 또한 문자열의 모든 문자는 대문자이며 암호문은 단순한 암호문입니다.

+0

여기에 어떤 종류의 암호가 사용됩니까? 간단한 교대 암호 또는 더 복잡한 무엇인가? – DinoOcch

+0

단순 암호 시프트 문자를 앞으로 옮깁니다. –

+0

이미 수행 한 작업을 추가 할 수 있지만 metter가 없다고 느낍니다. –

답변

0

간단히하기 위해 시저 (또는 교대) 암호를 풀려고한다고 가정합니다. 이와 관련된 원칙은 다른 암호에도 적용되어야합니다.

가장 일반적인 문자를 찾고 싶다고 나타 냈습니다. 이 편지는 다른 편지가 될 수 있기 때문에 모든 경우에 도움이되지는 않습니다. 그러나 이것을 사용하여 편지 빈도 공격을 할 수 있습니다 ... 이것은 매우 긴 문자열의 경우에만 효과적입니다 ...

아마 이러한 문제를 해결하는 가장 쉬운 방법은 솔루션을 강제로 사용하는 것입니다. 극소수의 솔루션 만 있기 때문에 무차별 대입은 매우 효과적 일 수 있습니다. 알파벳에는 26 자의 글자가 있으므로 0-25자를 바꿀 수 있습니다. 즉, 확인할 수있는 문자열은 25 개뿐입니다.

이러한 문자열을 찾는 것은 비교적 쉽습니다. 1-25 범위의 루프를 사용하십시오. 이제 문자열의 각 문자를 숫자 0-25 [A = 0, B = 1 ... Z = 25]로 변환하고 시프트 [1-25]를 추가하십시오. (char_value + shift) % 26은 새로운 캐릭터 가치를 제공합니다. (ASCII 문자 값을 사용할 수도 있지만 이해를 위해 사용합니다.

어느 문자열이 일 가능성이 가장 높습니까? 가장 올바른 방법은 무엇입니까? 이 단어는 일반적인 단어 사전을 사용하는 것입니다.이 공격 유형에 대한 자세한 내용은 http://en.wikipedia.org/wiki/Known-plaintext_attack입니다. 사전을 사용하면 알려진 단어 수가 가장 많은 문자열을 찾습니다. 기회는이 솔루션이 될 것입니다.

이 모든 경우에 작동합니다.


의 경우 가장 일반적인 문자가 E으로 바뀌는 문제를보고 싶으면 문제가 훨씬 간단 해집니다. 그러나 실제 예제에서 문자열의 가장 일반적인 문자는 반드시 E 일 필요는 없으므로이 전략은 최적이 아닙니다.

문자열을 반복하면서 가장 일반적인 문자를 찾고 각 문자의 발생 횟수를 기록하십시오. 당신은 여러 가지 방법으로 이것을 할 수 있습니다. 당신은 int,지도, 또는 꽤 많은 것들을 사용할 수 있습니다 ...

여기에서이 글자에서 E으로의 이동 크기를 결정하십시오. 예를 들어, S이 가장 일반적이면 시프트는 12입니다. E의 값은 4입니다. S의 값은 18입니다. 시프트는 (26-18) +4입니다. 이는 나머지 함수, 즉 ((26-o)+4) % 26을 사용하여 가능한 모든 문자로 변환 할 수 있습니다. o이 가장 빈번한 문자의 값입니다. 따라서 가장 빈번한 문자가 A = 0, 26 + 4 % 25 = 4이면 올바른 이동입니다.

이제 위에서 설명한대로 모든 문자를 이동할 수 있습니다.

+0

우리의 작업에서 우리는 E라는 글자가 영어 알파벳의 가장 일반적인 글자라는 것을 알았습니다. 내 S는 끝나는 문자열 그래서 나는 E가 S로 바뀌 었다고 생각한다. 이제는 모든 문자열에 대해 이것을하고 싶다. 가장 일반적인 문자를 찾는다. 키를 알고 문자열을 암호 해독 할 수있다. –

+0

나는 모든 것을 가지고있다. 수식 내가 찾고 있었어, 당신은 내가 Shift를 계산하는 이유는이 방법을 설명 할 수 있습니까? 나는 그 권리를 얻지 만 그것을 얻는 방법은 아닙니다. 편집 : 좋아, 이제 내가 당신에게 전자 S를 선별 해 놨어 그래서 각 편지는 그녀가 E에서 S로 E에서 S로 이동을 계산하려고 그녀의 장소에 갈 것 –

관련 문제