C언어 ROT13 문자암호화 알고리즘 만들기

2018. 9. 27. 22:01개발노트

ROT13이라는 문자암호화 알고리즘을 만드려면

우선 ROT13이 뭔지 알아야겠죠?


ROT13(Rotate by 13)은 단순한 카이사르 암호의 일종으로 영어 알파벳을 13글자씩 밀어서 만든다. 흔히 ROT-13 혹은 rot13이라고도 쓴다. 예를 들어서 'I LOVE YOU'를 ROT13으로 암호화하면 'V YBIR LBH'가 된다. 이 방법은 유즈넷을 비롯한 온라인 게시판에서 퍼즐의 정답이나 스포일러 등과 같이 미리 보기를 원치 않는 내용을 암호화하는 데 자주 사용된다.


https://ko.wikipedia.org/wiki/ROT13


그림을 보니까 쉽게 이해가 되죠?


입력한 알파벳에서  a부터 m까지는 13을 더하고, n부터 z까지는 13을 빼면 됩니다.


문자입력은 getchar를 사용해서 한글자씩 입력받고

putchar로 한글자씩 출력합니다.


그리고 입력한 문자가 대문자인지 소문자인지 판단하려면 


if문이 필요합니다.

if ((c >= 'A' && c <= 'Z')) //대문자

else if ((c >= 'a') && c <= 'z') //소문자


이렇게하면 대문자와 소문자를 거를수 있죠


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
#include <stdio.h>
 
int main(void)
{
    int c;
    int t;
 
    while ((c = getchar()) != EOF) //컨트롤 + z는 종료
    {
        if ((c >= 'A' && c <= 'Z')) //대문자
        {
            if ((t = c + 13) <= 'Z')
                putchar(t);
 
            else
            {
                t = c - 13;
                putchar(t);
            }
        }
        else if ((c >= 'a') && c <= 'z') //소문자
        {
            if ((t = c + 13) <= 'z')
                putchar(t);
            else
            {
                t = c - 13;
                putchar(t);
            }
        }
        else
            putchar(c); //띄어쓰기
    }
    printf("프로그램종료");
    return 0;
}
cs