암호화란 일반 문장(평문)을 원하지 않는 사람은 알아볼 수 없는 문장(암호문)으로 변형시키는 것을 말합니다.
변형의 방법은 문자를 다른 문자로 바꾸는 것(치환)과 문장 내에서 문자의 위치를 바꾸는 것(전치)이 있습니다.
변형시킨 문장은 필요에 따라 원래의 문장으로 되돌릴 수 있어야 하므로 변형 규칙이 필요합니다.
변형 규칙은 암호표를 이용하거나 일정한 규칙으로 변형시키는 암호화키를 사용합니다.
김수정의 암호제작기는 치환의 방법으로 카이사르암호화와 전치의 방법으로 주상전치암호화를 사용했습니다.
카이사르암호화는 알파벳을 'A'에서 'Z'까지 나열한 후 암호화키만큼 일정하게 이동시켜 다른 문자로 바꾸는 방법입니다.
만약 암호화키가 3이라면 평문의 'A'에서 'Z'의 알파벳은 다음 표와 같이 'D'에서 'C'로 바꾸어줍니다.
평문 |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
암호화키: '3' 또는 'C' | ||||||||||||||||||||||||||
암호문 |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
주상전치암호화는 평문을 암호화키의 길이에 따라 몇 개의 열에 배열한 후에 열 방향으로 문자를 다시 배열하는 방법입니다.
어느 열을 먼저 읽을지는 암호화키의 순서를 따릅니다.
평문 |
ABCDEFGHIJKLMNOPQRST |
|||
암호화키 |
4213 |
|||
열번호
|
1 |
2 |
3 |
4 |
A |
B |
C |
D |
|
E |
F |
G |
H |
|
I |
J |
K |
L |
|
M |
N |
O |
P |
|
Q |
R |
S |
T |
|
암호문 |
DHLPT BFJNR AEIMQ CGKOS (공백은 이해를 위해 임의로 넣었습니다.) |
주상전치암호화할 때에 평문 문자 수가 열을 전부 채우지 못하는 경우가 생길 수 있습니다.
김수정의 암호제작기는 이 때에 남는 공백을 ':' 기호로 채웁니다. 또한 단어 사이의 공백(스페이스)은 '_'기호로 변환합니다.
암호화키는 숫자를 사용할수도 있지만, 'hackers'처럼 서로 다른 알파벳으로 구성된 단어를 이용할 수도 있습니다.
김수정의 암호제작기는 암호화키로 서로 다른 알파벳으로 구성된 단어를 입력받아 가장 마지막 알파벳은 카이사르암호화키로 사용하고 나머지 단어는 주상전치암호화키로 사용합니다.
예로서, 평문 'what a wonderful world'를 암호화키 'hackers'로 암호화하는 과정을 표로 작성해 보았습니다.
[카이사르암호화]
평문 |
what |
a |
wonderful |
world
|
암호화키 |
'S' | |||
암호문 |
ozsl |
s |
ogfvwjxmd |
ogjdv
|
[주상전치암호화]
평문 |
ozsl s ogfvwjxmd ogjdv |
|||||
암호화키 |
'hacker' -> '412536' |
|||||
열번호 |
4 |
1 |
2 |
5 |
3 |
6 |
o |
z |
s |
l |
_ |
s |
|
_ |
o |
g |
f |
v |
w |
|
j |
x |
m |
d |
_ |
o |
|
g |
j |
d |
v |
_ |
: |
|
암호문 |
zoxjsgmd_v__o_jglfdvswo: (인터넷 프로그램 구현상 마지막에 공백(스페이스)이 추가됩니다.) |
[김수정 암호제작기]
평문 |
what a wonderful world |
암호화키 |
'hackers' |
암호문 |
zoxjsgmd_v__o_jglfdvswo: |