가장 오래된 암호중 하나.
줄리어스 시저(Julius Caesar)가 사용하여 그 이름이 유래.
가장 대표적인 대치 암호(substitution cipher)
평문 문자를 다르 문자로 일대일 대응시켜 암호문을 만들어 내는 방식.
영문 문자에 번호를 0부터 25까지 부여하여 이 문자를 비밀키와 조합하여 법연산하는 것이 특징.
만약 암호용 비밀키가 k라고 가정하고 평문은 p 암호문이 c라고 하면
c = p+k mod 26
m = c - k mod 26
이 되는 것이다.
여기서 시저 암호의 키는 평문의 시프트 간격인 k 가 되고 mod 26이란 모듈러 연산으로 합의 값을 다시 26으로 나눈 나머지 값을 의미한다.
ex
평문 :: My name is Peace
비밀 키 :: 6
암호문 :: Se tgsk oy Vkgik
복호 키 ::-6
복호 문 :: My name is Peace
C++로 만들어진 코드
줄리어스 시저(Julius Caesar)가 사용하여 그 이름이 유래.
가장 대표적인 대치 암호(substitution cipher)
평문 문자를 다르 문자로 일대일 대응시켜 암호문을 만들어 내는 방식.
a | 0 | n | 13 |
b | 1 | o | 14 |
c | 2 | p | 15 |
d | 3 | q | 16 |
e | 4 | r | 17 |
f | 5 | s | 18 |
g | 6 | t | 19 |
h | 7 | u | 20 |
i | 8 | v | 21 |
j | 9 | w | 22 |
k | 10 | x | 23 |
l | 11 | y | 24 |
m | 12 | z | 25 |
영문 문자에 번호를 0부터 25까지 부여하여 이 문자를 비밀키와 조합하여 법연산하는 것이 특징.
만약 암호용 비밀키가 k라고 가정하고 평문은 p 암호문이 c라고 하면
c = p+k mod 26
m = c - k mod 26
이 되는 것이다.
여기서 시저 암호의 키는 평문의 시프트 간격인 k 가 되고 mod 26이란 모듈러 연산으로 합의 값을 다시 26으로 나눈 나머지 값을 의미한다.
ex
평문 :: My name is Peace
비밀 키 :: 6
암호문 :: Se tgsk oy Vkgik
복호 키 ::-6
복호 문 :: My name is Peace
C++로 만들어진 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <iostream> #include <cstring> using namespace std; int main() { int i=0, key=0, str_size=0; char str[50] ={0,}; cout<<"평문 또는 암호문을 입력하시오 "<<endl; gets(str); // Enter가 들어올때까지 입력을 받기위해 gets를 사용했다. cout<<"키 값을 입력하세요 : "; cin>>key; str_size=strlen(str); // 평문, 암호문의 길이를 구한다. for(i=0;i<str_size;i++) { if((str[i]>='a')&&(str[i]<='z')) { str[i]-='a'; if((str[i]+key) <0) str[i]+=26; str[i] =(str[i]+key)%26; str[i]+='a'; } if((str[i] >='A')&&(str[i]<='Z')) { str[i]-='A'; if((str[i]+key)<0) str[i]+=26; str[i]=(str[i]+key)%26; str[i]+='A'; } } cout<<endl<<"암호화 또는 복호화된 결과 출력 : "<<str<<endl; return 0; } | cs |
'정보 보안' 카테고리의 다른 글
전치암호(transposition chipher) (0) | 2011.05.21 |
---|---|
Vigenere 암호(Vigenere cipher) (0) | 2011.05.21 |
단일 대치 암호(mono-alphabetic substitution cipher) (0) | 2011.05.21 |