Security || AI

[암호학]카이사르(시저)암호 해독 C언어 본문

Programming

[암호학]카이사르(시저)암호 해독 C언어

보안&인공지능 2018. 10. 13. 00:20

이번 글에서는 CTF문제에 자주 출제되는 암호 기법 중 하나인 카이사르(시저)암호에 대해 다루어 볼 것이다..

카이사르 암호는 치환 암호의 일종으로 예를 들어 A -> C, B -> D 이런식으로 암호화를 하는 암호 기법이다.

#include <stdio.h>
#include <string.h>
#include <windows.h>
main()
{
    char s[10000];
    gets(s);
    for(int n=1; n<=26; n++)
    {
        for(int i=0; i<strlen(s); i++)
        {
            if(i<strlen(s)){
            	if(isalpha(s[i]))
            	{
            		if(s[i]==90)
	                    s[i]=65;
	                else if(s[i]==122)
	                    s[i]=97;
	                else
	                    s[i]++;
				}
            }
        }
        printf("%d번째: %s\n",n,s);
    }
    system("pause");
}

문자열을 받으면 알파벳인 경우에만 문자의 아스키코드를 더해 모든 경우의 대칭 암호를 보여주는 소스코드이다.

소문자에서는 z의 아스키코드인 122, 대문자에서는 Z의 아스키코드인 90일 때 각각 a, A로 바꾸어주는 알고리즘을 가진다.


실행 예시, 결과 


5번째에 This is Caesar라는 해독 결과를 볼 수 있다.

반응형