역사서를 저술한 폴리비오스(Πολύβιος)가 개발한 암호로 오래된 고전암호에 속한다.
고전암호라고해서 암호화 성능이 결코 떨어지지 않는다.
알파벳은 가로 5, 세로 5개의 2차원 행렬로 표현된다.
위 테이블에서 평문이 'RUSSIA'라고 한다면
42 45 43 43 24 11이 된다.
★ 암호테이블의 순서를 섞은 후 암기하도록 하면 암기한 사람만이 그 정답을 알 수밖에 없다.
한글로 2차원 행렬로 표현될 수 있다.
평문을 '일본'이라고 한다면
23 54 14 21 44 12가 된다.
C#을 사용하여 폴리비오스 암호를 구현하려면
1) 암호화할 문자열과 폴리비오스 사각형을 만든다.
2) 폴리비오스 사각형에 문자열을 채운다.
3) 특정 규칙에 따라 암호문을 생성한다.
using System;
namespace Polyvious
{
class Program
{
static void Main(string[] args)
{
int[] x = new int[5] { 1, 2, 3, 4, 5 };
int[] y = new int[5] { 1, 2, 3, 4, 5 };
string[,] z = new string[5, 5] {{ "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" }};
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
Console.WriteLine("x:" + x[i] + ", y:" + y[j] + ", z:" + z[i , j]);
}
}
}
}
}
결과
x:1, y:1, z:A
x:1, y:2, z:B
x:1, y:3, z:C
x:1, y:4, z:D
x:1, y:5, z:E
x:2, y:1, z:F
x:2, y:2, z:G
x:2, y:3, z:H
x:2, y:4, z:I
x:2, y:5, z:J
x:3, y:1, z:K
x:3, y:2, z:L
x:3, y:3, z:M
x:3, y:4, z:N
x:3, y:5, z:O
x:4, y:1, z:P
x:4, y:2, z:Q
x:4, y:3, z:R
x:4, y:4, z:S
x:4, y:5, z:T
x:5, y:1, z:U
x:5, y:2, z:V
x:5, y:3, z:W
x:5, y:4, z:X
x:5, y:5, z:Y
12 51 34 14 11 34 22
이 암호는 무슨 뜻일까?
'디지털포렌식(Digital forensic) > 알파벳' 카테고리의 다른 글
[파일] 생존 신호 모스 부호, 이진화 (0) | 2023.10.06 |
---|---|
[파일]ROT13, 10대의 암호 (1) | 2023.09.08 |
시저 암호, Vdpvxqj라고 쓰고 Samsung이라고 읽음. (1) | 2023.08.29 |
bit shift 암호, 75, 79, 82, 69, 65 (1) | 2023.08.25 |
XOR 암호, aeae?yAAI (1) | 2023.08.24 |