카이사르 암호는 비밀 군사 통신에 사용했던 율리우스 카이사르(기원전 100년~기원전 44년)의 이름을 따서 명명되었습니다. 카이사르 암호는 대체 암호입니다. Julius Caesar는 원래 메시지를 암호화하고 해독하기 위해 3교대를 사용했습니다. 암호화는 아핀 함수(f(x)=x+b)를 사용하여 수행됩니다.
먼저 초기 텍스트(암호화할 메시지)의 각 문자는 26개의 문자를 포함하는 라틴 알파벳의 위치에 해당하는 0에서 25 사이의 숫자로 변환됩니다 --> (a = 0, b = 1 ... z = 25).
그런 다음, 얻은 각 숫자는 아핀 함수(f(x) = 1x + b)로 변환됩니다. "x"는 숫자를 나타내고 "b"는 암호화 중에 정의됩니다. "b"는 최종 메시지를 해독하는 데 사용되는 키입니다.
모든 이미지를 가져와 목록에 넣으면 초기 텍스트의 n 문자에 해당하는 n 숫자를 얻습니다. 다음 단계는 각 숫자의 모듈로 26 값을 찾는 것입니다. ( 모듈로는 나머지를 의미함 )
예:
19 = 4 * 4 + 3
이므로 모듈로 4는 3 입니다. 반면,26 = 26 * 1 + 0
이므로 모듈로 26은 0 입니다.
따라서 우리는 각각 0에서 25 사이의 n개 요소가 포함된 새 목록을 얻습니다. 이 모든 숫자는 아래 표를 사용하여 라틴 알파벳 문자로 변환됩니다.
마침내 모든 글자를 나란히 놓아 최종 메시지를 만듭니다.
1단계와 4단계는 다음 테이블을 사용하여 수행할 수 있습니다.
에이 | 비 | 기음 | 디 | 이자형 | 에프 | G | 시간 | 나 | 제이 | 케이 | 엘 | 중 | N | 영형 | 피 | 큐 | 아르 자형 | 에스 | 티 | 유 | 다섯 | 여 | 엑스 | 와이 | 지 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
공격자가 메시지가 Caesar Cipher를 사용하여 암호화되었다는 사실을 알고 있는 경우 모든 시프트(1에서 25까지의 b 값)를 시도하여 메시지를 해독할 수 있습니다. 이것을 무차별 대입 방식 이라고 합니다.
각 문자는 동일한 알고리즘으로 암호화되고 영어에서 가장 일반적인 문자는 다음과 같으므로 빈도 분석을 사용하여 메시지를 해독할 수도 있습니다.
위의 표를 사용하여 ATTACK은 다음과 같이 작성할 수 있습니다. 25 0 19 19 0 2 10 25 각 숫자의 이미지:
새 목록은 29 4 23 23 4 6 14 29 입니다.
모듈로 26 방법을 사용하여 다음을 얻습니다.
최종 메시지는 3 4 23 23 4 6 14 3 이며 테이블을 다시 사용하여 암호화된 메시지로 변환합니다.
덱스세고드
ZATTACKZ 는 x + 4 함수로 암호화되어 DEXXEGOD가 됩니다.
위의 표를 사용하여 DEXXEGOD는 다음과 같이 작성할 수 있습니다. 3 4 23 23 4 6 14 3 각 숫자의 이미지:
새 목록은 다음과 같습니다: -1 0 19 19 0 2 10 -1
모듈로 26 방법을 사용하여 다음을 얻습니다.
최종 메시지는 25 0 19 19 0 2 10 25 이며 테이블을 다시 사용하여 암호화된 메시지로 변환합니다.
자타크즈
DEXXEGOD는 1x - 4 함수로 해독되어 ZATTACKZ 가 됩니다.
이를 무차별 대입 방식이라고 합니다.
위의 표를 사용하여 DEXXEGOD는 다음과 같이 작성할 수 있습니다. 3 4 23 23 4 6 14 3
a는 0에서 25 사이의 숫자입니다. (a = 0은 메시지가 이미 해독되었음을 의미합니다.)
f(x) = Mod(1x + a, 26) 함수 사용:
우리는 다음과 같은 결과를 모두 얻을 수 있습니다.
에이 | 해독된 텍스트 |
---|---|
1 | fgzzgiqf |
2 | 가아아아 |
3 | 히빅쉬 |
4 | ijccjlti |
5 | jkddkmuj |
6 | kleelnvk |
7 | lmffmowl |
8 | mngnpxm |
9 | 노호친 |
10 | opiiprzo |
11 | pqjjqsap |
12 | qrkkrtbq |
13 | rsllsucr |
14 | stmmtvds |
15 | 터누웨트 |
16 | 우보브푸 |
17 | vwppwygv |
18 | wxqqxzhw |
19 | xyrryaix |
20 | yzsszbjy |
21 | 자타크즈 |
22 | 아부브들라 |
23 | bcvvcemb |
24 | cdwwdfnc |
25 | 덱신 |
의미가 있는 유일한 텍스트는 zattackz이므로 키가 21(25 - b = 21)이라고 추론할 수 있습니다.
DEXXEGOD 는 f(x) = 1x - 4 또는 f(x) = 1x + 21 함수로 해독되어 ZATTACKZ 가 됩니다.
언어 | 암호화 | 암호 해독 |
---|---|---|
기음 | Caesar.c | 출시 예정 |
기음# | Caesar.cs | 출시 예정 |
C++ | 메인.cpp | 메인.cpp |
자바스크립트 | encrypt.js | decrypt.js |
파이썬 | encrypt.py | decrypt.py |
스위프트 | lib.swift | lib.swift |
npm i @cryptoolsorg/caesarcipher