2014. 1. 3. 16:48 프로그래밍/C 언어

안녕하세요 오랫만에 포스팅을 하게 되었네요.ㅎㅎ

오늘은 C 언어로 간단하게 만든 암호화 복호화 프로그램을 올리도록 하겠습니다.


암호화 복호화 프로그램 소개




초기 접근 권한은 신사과 입니다.





프리미엄 사용자로 넘어가기 위해서는 또 다른 접근권한이 필요하게 됩니다. 이때는 첨부한 vippasswd.dat 파일이 프로그램 exe 파일과 같은 위치에 저장되어 있어야 접근 권한을 입력 받는 곳으로 넘어가게 됩니다. 만약 파일이 없다면 다시 초기 화면으로 넘어가게 됩니다.





스코드 


#include <stdio.h>

#include <string.h>

#include <Windows.h>


void menu();

void lock();

void nomal();

void vip();

void nomalcry(char *str);

void nomalkey();

void vipcry(char *str);

void vipkey();

void vippass();


void main()

{

lock();

}


void lock()

{

char pass[50];

char passke[]="신사과";


printf("               ★★\n");

printf("             ◎   ◎\n");

printf("            ◎     ◎\n");

printf("           ◎       ◎\n");

printf("          ◎         ◎\n");

printf("          ◎         ◎\n");

printf("          ◎         ◎\n");

printf("    ■■■■■■■■■■■■■\n");

printf("    ■**********************■\n");

printf("    ■**********************■\n");

printf("    ■*******■■■■■*****■\n");

printf("    ■*******■      ■*****■\n");

printf("    ■*******■    ♨■*****■\n");

printf("    ■*******■      ■*****■\n");

printf("    ■*******■■■■■*****■\n");

    printf("    ■**********************■\n");

printf("    ■■■■■■■■■■■■■\n\n\n");


printf("접근 권한 입력 : ");

scanf("%s",pass);

getchar();


if(!strcmp(pass,passke))

{

menu();

}

else

{

printf("\n허가된 사용자가 아닙니다!!!!\n");

exit(0);

}

}



void menu()

{

int i=0;

system("cls");


for(;;)

{

system("cls");

printf(" \n\n\n\n\n\n ------ ㈜ 암호화 프로그램 ------ \n");

printf("§                              §\n");

printf("§ 1. 일반 사용자               §\n");

printf("§                              §\n");

printf("§ 2. 프리미엄 사용자           §\n");

printf("§                              §\n");

printf("§ 3. 종료                      §\n");

printf("§                              §\n");

printf(" --------------------------------\n");

printf("\n숫자 입력 : ");

scanf("%d",&i);

getchar();


if(i<=3)

{

break;

}

else

{

continue;

}

}

switch(i)

{

case 1:

nomal();


case 2:

vippass();


case 3:

exit(0);

}


}


void nomal()

{

int i=0;

char str[1000];

system("cls");


for(;;)

{

printf("\n\n\n▣      ▣       ▣▣      ▣        ▣        ▣▣       ▣\n");

printf("▣▣    ▣     ▣    ▣    ▣▣    ▣▣       ▣  ▣      ▣\n");

printf("▣ ▣   ▣    ▣      ▣   ▣ ▣  ▣ ▣      ▣    ▣     ▣\n");

printf("▣   ▣ ▣     ▣    ▣    ▣  ▣▣  ▣     ▣▣▣▣▣    ▣\n");

printf("▣      ▣       ▣▣      ▣   ▣   ▣    ▣        ▣   ▣▣▣▣▣\n");

printf("=====================================================================\n\n");


printf("1. 메세지 입력\n\n");

printf("2. 암호화\n\n");

printf("3. 복호화\n\n");

printf("4. 메인메뉴\n");

printf("\n숫자 입력 : ");

scanf("%d",&i);


if(i>4)

{

continue;

}

switch(i)

{

case 1:

printf("메세지를 입력해 주십시오. \n");

getchar();

gets(str);

break;

case 2:

nomalcry(str);

break;

case 3:

nomalkey();

break;

case 4:

menu();

break;

}

}

}


void nomalcry(char *str)

{

int i=0;

FILE *fp=NULL;

fp=fopen("nomal.txt","wt");

printf("\a\a\a\a");

while(str[i]!=NULL)

{

str[i]+=34;

i++;

}


fputs(str,fp);

fclose(fp);

}


void nomalkey()

{

int i=0;

char mo[10000];

FILE *fp=NULL;

fp=fopen("nomal.txt","rt");


if(fp==NULL)

{

puts("암호화된 메세지가 존재하지 않습니다.");

nomal();

}


fgets(mo,sizeof(mo),fp);

while(mo[i]!=NULL)

{

mo[i]-=34;

i++;

}

printf("\n복호화 완료 \n%s \n",mo);

fclose(fp);

}


void vippass()

{

int i=0;

char key[20];

char pas[20];

int ke=2014;

FILE *fp;

fp=fopen("vippasswd.dat","r");

if(fp==NULL)

{

puts("VIP 패스워드 파일이 존재하지 않습니다!!!\n\n\a\a\a\a");

lock();

}


fgets(pas,sizeof(pas),fp);


printf("VIP 접근권한을 입력해 주십시오 :");

scanf("%s",key);

getchar();

while(pas[i]!=NULL)

{

pas[i]^=ke;

i++;

}


if(!strcmp(pas,key))

{

vip();

}

else

{

printf("VIP 접근권한이 아닙니다!!\n\n\a\a\a\a");

lock();

}


fclose(fp);

}


void vip()

{

int i=0;

char str[1000];

system("cls");


for(;;)

{

printf("\n\n▣        ▣   ▣    ▣▣▣\n");

printf(" ▣      ▣    ▣    ▣   ▣\n");

printf("  ▣    ▣     ▣    ▣▣▣\n");

printf("   ▣  ▣      ▣    ▣\n");

printf("    ▣▣       ▣    ▣\n\n");

printf("▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤\n\n");


printf("1. 메세지 입력\n\n");

printf("2. 암호화\n\n");

printf("3. 복호화\n\n");

printf("4. 메인메뉴\n");

printf("\n숫자 입력 : ");

scanf("%d",&i);


if(i>4)

{

continue;

}


switch(i)

{

case 1:

printf("메세지를 입력해 주십시오. \n");

getchar();

gets(str);

break;


case 2:

vipcry(str);

break;

case 3:

vipkey();

break;

case 4:

menu();

break;

}

}

}



void vipcry(char *str)

{

int i=0;

int xor=229;


FILE *fp=NULL;

fp=fopen("vip.txt","wt");

printf("\a\a\a\a");

while(str[i]!=NULL)

{

str[i]+=13;

str[i]^=xor;

str[i]=~str[i];

i++;

}

fputs(str,fp);

fclose(fp);

}


void vipkey()

{

int i=0;

int xor=229;

char mo[10000];


FILE *fp=NULL;

fp=fopen("vip.txt","rt");

if(fp==NULL)

{

puts("암호화된 메세지가 존재하지 않습니다.");

vip();

}

fgets(mo,sizeof(mo),fp);


while(mo[i]!=NULL)

{

mo[i]=~mo[i];

mo[i]^=xor;

mo[i]-=13;

i++;

}


printf("복호화 완료 \n%s\n\n",mo);

fclose(fp);

}



다운파일





고고 소스는 오픈소스입니다.


    소스파일을 원하시는 분은 덧글로 메일 주소를 남겨주시길 바랍니다. 확인하       는 즉시 소스파일을 메일로  전송해 드리도록 하겠습니다.



posted by 신사과

댓글을 달아 주세요

  1. 이전 댓글 더보기