2018년 3월 20일 화요일

고전암호 시저암호(Caesar)(초안)




1. 시저암호란?
 줄리어스 시저(Julius Caesar, 기원전 100년 경)라는 로마에서 활약했던 장군으로서 그 당시에 사용했으며, 이 사람의 이름을 본떠서 만든 시저암호를 알아보자. 암호학에서는 시저암호 또는 카이사르 암호(Caesar Cipher)라고도 부르기도 한다.

 시저암호는 대칭키 암호 방식이며, 평문에 키 값을 이용하여 치환시키는 일종의 치환 암호방식이라고도 생각할 수 있다. 키 값의 크기만큼 알파벳을 다른 알파벳으로 치환시키는 역할을 해준다. 그러므로 키 값은 영어 알파벳이 26자이므로  26보다 큰 키 값을 사용 시에 0~25사이로 정해질 수 밖에 없다.

그림을 통해 살펴보자
 1) 평문 → 암호문
 평문: water, 키 값: 3






 2) 암호문 → 평문
 암호문 : OOOOO, 키 값 : 3

 그림을 통해 알아보니 평문을 Key 값을 통해서 몇 번째 위치시키는지 결정해주는 방식이다.
 - 암호화 : 평문 + Key만큼 대칭이동
 - 복호화 : 암호문 -Key만큼 대칭이동
만약 Key 값이 26을 주어진다면  Key 값은 0 이나 다름이 없다. 알파벳은 26자 이므로, 원래 평문값으로 되돌아오는 규칙을 주의해야 한다.
 예를들어 key 값이 27인 경우 27 % 26 = 1으로 key 값이 1인 경우와 같은 결과가 나온다.

 시저암호(Caesar Cipher) 알고리즘 구현




 실행결과
1) 암호화
 

2)복호화


댓글 없음:

댓글 쓰기

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

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