2018년 3월 29일 목요일

고전암호(2) - 비제네르 암호

 이전시간에 OTP암호알고리즘, 시저암호에 대해서 알아보았다.

이번시간에는 비제네르 암호에 대해서 알아보자.

 비제네르 암호란?
단일치환암호인 시저암호와 비슷한 방법의 암호방식이다. 알파벳의 a~z(26개)를 비제네르 표에 맞추어 암호화하는 방법이다. 필자가 방금 말한 비제네르 표에 맞추었다는건, 다음과 같은 표를 보면서 이해해보자.

<비제네르 표>





비제네르 표를보면 세로 x 가로(25X25) 형태로 되어있다는걸 볼수있는데, 키 값의 형태는 알파벳 형태(A~Z)로 길이는 상관없으며, 키의 길이만큼 차례대로 평문의 알파벳과 연산되면서 암호화 된다. 키(A~Z)를 0~25의 수로 바꾸며, 26으로 나누어서 해당 평문이나 암호문에 연산하면 된다.

1) 비제네르 암호화를 살펴보자,
Plaintext  →      Lifeisgood
Key        →       auto;














 이전시간에 알아본 시저암호와 매우 비슷한 암호 알고리즘인데, 이전의 시저암호에서의 키는 숫자이며, 해당 평문 문자열에 키값을 하나씩더해서 암호화를 시켰는데, 비제네르 암호는 키 값을 문자열로 받고, 평문의 길이에 맞게 문자열 하나씩 대입하면서 암호화를 진행한다. 이러한 특성으로 '빈도분석법'으로 해독이 거의 불가능하며, 키 값의 갯수(길이) 또한 제한이 되지않고, 해독시 예상이 불가능하다. 이것은 송신자와 수신자만의 동일한 키로 암호화 / 복호화가 가능하므로, 대칭키 암호 알고리즘에 속한다.

> 비제네르 암호 프로그래밍








 - 비제네르 암호화 복호화 방식
1) 비제네르 암호화 : E = (M(평문) + Key(키값)) mod 26

2) 비제네르 복호화 : D = (C-Key) mod26

 > 비제네르 암호화 / 복호화 결과



















댓글 없음:

댓글 쓰기

[Java] N-I/O(Non-Blocking) 파일 읽기 쓰기 - GatheringByteChannel, ScatteringByteChannel, ByteBuffer 사용.

우리는 지금까지 다음과 같이 살펴보았다. 1.  InputStream / OutputStream : 입, 출력 스트림을 바이트로 처리하여 읽기, 쓰기. 2.  FileInputStream / FileOutputStream : 입, 출력 스트림을 ...