Playfair 암호화 기술에 따라 두 줄을 입력하고 첫 번째를 핵심 문구로 사용하여 두 번째를 암호화하는 프로그램을 작성하십시오.
Wikipedia는 Playfair 암호화에 대해 자세히 설명 하지만 모호성을 피하기 위해 간단한 요약을 제공합니다.
1. 키 테이블을 생성하십시오.
J
키워드 의 모든 어커런스를 I
로 바꾸고 알파벳이 아닌 문자와 반복되는 문자를 모두 제거하십시오. 5x5 암호화 테이블에 삽입하여 나머지 셀을 나머지 알파벳으로 채 웁니다 (단 J
, 우리는 싫어합니다 J
).
예:
S T A C K
O V E R F
Stack Overflow --> STACKOVERFLW --> L W B D G
H I M N P
Q U X Y Z
2. 암호화 할 메시지 준비
모든 교체 J
와 I
을 사용하여 쌍으로 모든 비 알파벳 문자와 분할을 제거, X
두 번 같은 문자를 포함하는 모든 쌍을 중단 할 수 있습니다. 홀수 개의 문자로 X
끝나는 경우 끝에 추가 하십시오. (참고 : - 숫자는 전체 철자되어야한다 ONE
, TWO
, THREE
, 등 -하지만 당신이 이미 당신을 위해 수행 된 가정 할 수 있습니다.)
예:
In:
The cat crept into the crypt, crapped, and crept out again.
Out:
TH EC AT CR EP TI NT OT HE CR YP TC RA PX PE DA ND CR EP TO UT AG AI NX
3. 암호화
각 문자 쌍을 차례로 암호화하십시오. 이들이 키 테이블의 다른 행과 열에있는 경우, 각 문자를 다른 문자가있는 열에서 동일한 행의 문자로 바꾸십시오 (예 : VM
⇒ EI
, LZ
⇒ GQ
). 동일한 행 (또는 열)에있는 경우 필요에 따라 줄 바꿈하여 오른쪽 (또는 아래)에 즉시 두 문자를 선택하십시오 (예 : OE
⇒ VR
, ZG
⇒ KP
).
예:
In:
TH EC AT CR EP TI NT OT HE CR YP TC RA PX PE DA ND CR EP TO UT AG AI NX
Out:
SI RA CA RD FM VU IC VS MO RD ZN AK EC MZ MF BC YN RD FM SV TV KB TM MY
이 프로세스에서 생성 된 문자열은 프로그램에서 출력해야하는 암호화 된 메시지입니다.
규칙 :
- 입력 텍스트 및 키는
stdin
, 명령 줄 인수 또는 기타 이러한 소스 에서 얻을 수 있습니다 . 하드 코딩 된 입력은 허용되지 않습니다. - 프로그램은 암호 문구와 메시지에 대해 대문자와 소문자를 모두 허용해야합니다.
- 암호화 된 출력은 대문자 또는 소문자 일 수 있습니다.
- 프로그램은 64 자 이상의 키 구문과 16KB 이상의 메시지 텍스트를 허용해야합니다.
- 비 ASCII 입력을 처리 할 필요는 없습니다.
XX
암호화 중에 문자 쌍이 발생할 가능성을 무시할 수 있습니다 .- 프로그램 출력에 공백을 추가 할 필요가 없습니다.
- 답은 메시지, 핵심 문구 및 프로그램에서 생성 된 암호화 된 출력의 예를 포함해야합니다.
- 이것은 코드 골프 도전이므로 가장 짧은 코드 (바이트)의 답이 이길 것입니다.
참고 : 연속 된 문자 가 동일한 쌍으로 표시 되는 경우에만 연속 문자를 분리해야합니다 . 예를 들어 , 이중 은 분할되어야하지만 이중 은
MASSACHUSETTS
암호화 되지 않아야합니다.MA SX SA CH US ET TS
S
T
J
" "APL에 대해 비슷한 감정을 품고 있습니까?