CodeGym /Java Course /모듈 1 /모듈 1의 최종 프로젝트를 위한 연습

모듈 1의 최종 프로젝트를 위한 연습

모듈 1
레벨 28 , 레슨 1
사용 가능

암호학, 암호학 및 암호해독

최종 프로젝트를 작성할 때 필요한 이론적 지식을 살펴보겠습니다. 암호화와 그 구성 요소에 대해 자세히 알아봅시다. 동시에 최종 프로젝트를 작성할 때 사용할 암호에 대해 자세히 알아봅니다.

1. 암호학과 그 구성요소

암호학은 다음을 포함하는 지식 분야입니다.

  • 암호화 (암호의 과학).

    암호화는 무단 액세스로부터 보호하기 위해 정보를 암호화하는 것입니다. 이 정보는 텍스트, 디지털 이미지, 오디오 신호 등이 될 수 있습니다. 암호화 프로세스는 암호문 또는 코드텍스트라고 하는 정보(데이터)의 암호화된 버전을 생성합니다.

  • Cryptanalysis (이러한 암호를 해독하는 방법).

    Cryptanalysis는 암호를 해독하는 방법과 이러한 방법을 적용할 수 있는 방법을 조사합니다. 즉, 암호 해독은 암호화된 정보를 일반 텍스트로 변환하는 방법을 연구하는 역 작업을 수행합니다.

2. 암호화 키

키는 정보를 암호화하고 해독하는 데 사용되는 데이터 선택입니다. 정보를 성공적으로 해독하는 기능은 사용되는 키에 따라 다릅니다. 어떤 이유로 키가 손실되면 데이터를 해독하는 것이 불가능합니다.

암호화 키의 크기는 비트 단위로 측정됩니다. 이것은 암호화 키의 길이 . 우수한 암호화 강도는 128비트 길이로 제공됩니다.

암호화 키 유형:

  1. 대칭 키(비밀 키). 당연히 이러한 키는 대칭 키 알고리즘으로 알려진 것에서 사용됩니다. 주요 목적은 정방향 또는 역방향 암호화 변환(암호화/암호 해독, 메시지 인증 코드 확인)을 수행하는 것입니다.

  2. 비대칭 키. 이들은 비대칭 키 암호화 알고리즘(예: 전자 디지털 서명을 확인할 때)에 사용됩니다.

우리는 대칭 키 암호화 알고리즘으로 작업할 것이므로 여기서는 자세히 설명하지 않겠습니다.

3. 대체알파벳

대체 알파벳은 입력 문자를 인코딩하는 데 사용되는 완전한 문자 집합입니다.

4. 암호 해독에 대한 접근

다양한 암호 분석 접근 방식과 방법, 즉 암호를 해독하는 방법이 있습니다.

가장 간단한 것을 설명하겠습니다.

  1. 무차별 대입 (또는 무차별 대입 검색)은 올바른 키를 찾을 때까지 가능한 모든 키를 시도합니다. 이 방법의 장점은 단순성입니다. 단점은 많은 수의 가능한 키를 포함하는 암호에는 적합하지 않다는 것입니다.

  2. 통계 데이터를 기반으로 한 암호 분석 - 이 접근 방식에서는 암호문에서 다른 문자 발생에 대한 통계를 수집한 다음 일반 텍스트에서 다른 문자 발생 빈도에 대한 통계를 기반으로 암호를 해독합니다.

    예를 들어 영어 텍스트에서 문자 P의 빈도가 1.9%라는 것을 알고 있습니다. 암호문을 분석하면서 동일한 빈도로 나타나는 기호를 찾은 다음 문자 P라고 결론을 내립니다.

    이 접근 방식의 단점은 특정 언어, 작성자 및 텍스트 스타일에 의존한다는 것입니다.

5. 카이사르 암호

이것은 가장 간단하고 가장 잘 알려진 암호화 방법 중 하나입니다. 물론 그 이름은 황제 가이우스 율리우스 카이사르(Gaius Julius Caesar)가 이 방법을 사용하여 장군들과 비밀리에 서신을 교환한 것에서 유래했습니다.

카이사르 암호는 일반 텍스트의 각 문자를 알파벳에서 왼쪽이나 오른쪽으로 일정한 수의 위치에 있는 문자로 대체하는 대체 암호입니다.

시프트를 3으로 설정했다고 가정해 보겠습니다. 이 경우 A는 D로 대체되고 B는 E가 되는 식입니다.

이것은 최종 프로젝트를 완료하는 데 필요한 최소한의 이론입니다. 작업 설명으로 넘어 갑시다!

Java 구문 모듈의 최종 프로젝트입니다. 암호 분석기를 작성해 봅시다

당신의 임무는 카이사르 암호와 함께 작동하는 프로그램을 작성하는 것입니다.

문장 부호(. , ”” : - ! ? SPACE)뿐만 아니라 영어 알파벳의 모든 문자로 암호 알파벳을 구성하십시오. 대체 알파벳의 일부가 아닌 문자가 있으면 건너뛰십시오.

필수 요구 사항

프로그램에는 2가지 모드가 있어야 합니다.

  1. 암호화/복호화. 프로그램은 주어진 암호화 키를 사용하여 텍스트를 암호화하고 해독해야 합니다.

    프로그램은 소스 텍스트를 포함하는 텍스트 파일의 경로를 수신하고 해당 암호문을 포함하는 파일을 생성해야 합니다.

  2. 무차별 대입 공격에 의한 암호 분석

    이 모드에서 프로그램은 입력 텍스트 파일에 포함된 암호문을 해독해야 합니다.

    사용자가 무차별 대입을 선택하면 프로그램은 가능한 키를 독립적으로 열거하고 올바른 키를 선택하고 텍스트를 해독해야 합니다.

    프로그램이 올바른 키를 성공적으로 식별하기 위해 어떤 기준을 사용해야 하는지 생각해 보십시오. 단어 사이의 공백이나 문장 부호의 올바른 사용에 주의를 기울여야 할 수도 있습니다.

추가(선택 사항) 요구 사항

1. 통계분석에 의한 암호해독

사용자는 두 가지 암호 분석 방법 중 하나를 선택할 수 있어야 합니다. 사용자가 통계 분석 모드를 선택하면 사용자에게 일반 텍스트로 된 추가 텍스트 파일을 로드하라는 메시지가 표시됩니다. 가급적이면 동일한 작성자가 작성하고 동일한 스타일을 사용하십시오. 두 번째 파일의 내용을 기반으로 프로그램은 문자 발생에 대한 통계를 컴파일한 다음 이 통계를 사용하여 암호문의 암호 분석을 수행해야 합니다.

2. 사용자 인터페이스

재량에 따라 사용자와의 상호 작용을 위한 대화 상자를 만듭니다. 원하는 경우 Swing 및 JavaFX 그래픽 프레임워크를 사용할 수 있습니다.

완성된 솔루션을 공용 Git 리포지토리에 업로드합니다.

그룹이 통과하면 프로젝트가 확인됩니다.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION