본문 바로가기

디지털포렌식(Digital forensic)/알파벳

폴리비오스(Πολύβιος) 암호, 12513414113422

반응형

역사서를 저술한 폴리비오스(Πολύβιος)가 개발한 암호로 오래된 고전암호에 속한다.

고전암호라고해서 암호화 성능이 결코 떨어지지 않는다.

 

 

알파벳은 가로 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

이 암호는 무슨 뜻일까?

728x90