프로그래밍/C언어

시저암호란? - 시저암호 프로그래밍

안녕하세요~


오늘은 시저암호에 대해서 알아보고, 프로그래밍까지 해보겠습니돧


시저암호는 카이사르 암호라고도 부릅니다 (고대암호)


시저암호는 간단한 치환암호인데, key값을 받아서(수) 해당 숫자만큼 평문을 쉬프트 해줍니다.

 

간단하게 그림으로 표현을 해주면,



 

이런식으로 암호화가 진행된다는 것입니다.

예를들어, 평문이 ABC이고, key값이 3이라면, 3만큼 쉬프트를 해줘서 암호문이 DEF가 나오게 되는것입니다.

문제는 이 암호문 DEF를 26-3 인 23만큼 암호화를 진행해 주면 다시 평문이 나오게 됩니다.

 

따라서, 취약한 암호체계라고 할 수 있습니다.

 

하지만, 워게임이나 해킹대회에서는 가끔씩 나오는 문제이기도 합니다.

따라서 제가 주로 시저암호를 암호화, 복호화 하는 사이트를 걸어 놓겠습니다!

 

https://planetcalc.com/1434/ (URL 클릭시 바로 넘어갑니다.)

 

매우 간단한 암호인 만큼 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
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <ctype.h>
 
#define col GetStdHandle(STD_OUTPUT_HANDLE)//콘솔창의 핸들 정보를 가져옴
#pragma warning(disable:4996)
int main(void) {
    char Original_String[101];
    char Encode_String[101];
    int Len=0;
    int key=0;
    int i=0;
 
    memset(Original_String, NULL101); // 메모리 초기화
    memset(Encode_String, NULL101);
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10);
 
    printf("==============================\n");
    printf("Made by L0RQ2 - Cipher Decoder\n");                     
    printf("l0rq2.tistory.com\n");
    printf("==============================\n");
 
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
 
    printf("To Encode => ");
    gets_s(Original_String, 100); //초기 문장 받기
    printf("Key => ");
    scanf("%d"&key); //KEY값 받기
    Len = strlen(Original_String); //문장길이 받기
 
    for (i = 0; i < Len; i++) {  //Orginal_string[i]!=NULL
        if (isalpha(Original_String[i])) { //알파벳인가?
            Encode_String[i] = Original_String[i] + (key % 26);
        }
        else {
            Encode_String[i] = Original_String[i];
        }
    }
    puts(Encode_String);
    system("pause");
    return 0;
}
cs

 

(확실히 사진으로 첨부하는것보다 텍스트로 첨부하는것이 좋네요 ㅎㅎ)

코드를 짜면서 확실히 파이썬이 좋다는것을 느꼈습니다... ㅠㅠ

헤더파일은 필요없는것이 선언되어있을 수 도 있습니다. 그냥 제가 주로 사용하는 얘들이라 선언해 놓았습니다.

 

한번 화려하게 해보기 위하여 암호 프로그래밍의 글자색도 바꾸어 보았습니다.

 

 

 

크 잘되네요~

 

이상 포스팅을 마치겠습니다!

'프로그래밍 > C언어' 카테고리의 다른 글

시저 암호 업그레이드  (0) 2018.12.28
시저암호 프로그래밍 수정  (1) 2018.01.23