안녕하세요 오랫만에 포스팅을 하게 되었네요.ㅎㅎ
오늘은 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);
}
다운파일
소스는 오픈소스입니다.
소스파일을 원하시는 분은 덧글로 메일 주소를 남겨주시길 바랍니다. 확인하 는 즉시 소스파일을 메일로 전송해 드리도록 하겠습니다.
'프로그래밍 > C 언어' 카테고리의 다른 글
C언어 소켓프로그래밍 2편- Http request - response (0) | 2017.02.12 |
---|---|
C언어 소켓프로그래밍 1편- Http request - response (3) | 2017.01.10 |
c언어 파일 암호화 복호화 (53) | 2014.05.30 |