<stdio.h>#include <Windows.h>#include <conio.h> //로컬디스크 D 에 ID 라는 파일을 생성해주세요 (대문자)#include <string.h> //프로젝트 - 속성 - c/c++ - 전처리기 ;_CRT_SECURE_NO_WARNINGS 를 추가#include <stdlib.h>#include <ctype.h>
void menu(int*); //로그인프로그램메뉴void login(char*, char*); //로그인void singup(char*, char*); //회원가입
int main(void){ int cho; //선택화면에서 선택값을 저장하는곳 char loginid[15]; //로그인에서 아이디를 저장하는곳 char loginpassword[15]; //로그인에서 비밀번호를 저장하는곳 char singupid[15]; //회원가입에서 아이디를 저장하는곳 char singuppassword[15]; //회원가입에서 비밀번호를 저장하는곳
menu(&cho);
switch (cho) { case 1: login(loginid, loginpassword); break; case 2: singup(singupid, singuppassword); break; default: printf("잘못입력하셨습니다."); main(); break; }}
void menu(int *cho) //메인화면{ printf_s("제작자 : staff2303@gmail.com \n"); printf_s("==============================================. \n"); printf_s("1.login \n"); printf_s("2.sing up \n"); printf_s("주의! 문자입력시오류! (수정중)\n"); scanf_s("%d", cho); system("cls");
}
void login(char *loginid, char *loginpassword) //로그인화면
{ FILE *rfp; char file[50]; char loginpassword2[15]; int amo; printf_s("login. \n"); printf_s("==========================================. \n"); printf_s(" I D : "); scanf_s("%s", loginid, 15); sprintf_s(file, "D:\\ID\\%s.txt", loginid); // 아이디와 똑같은 파일을 오픈 fopen_s(&rfp, file, "r"); // 파일이없어서열수없을경우 rfp에는 NULL이들어온다.
if (rfp == NULL) { system("cls"); printf_s("아이디가없습니다. \n"); printf_s("==========================================. \n"); system("Pause"); system("cls"); main(); }
printf_s("PASSWORD : "); scanf_s("%s", loginpassword, 15); printf("암 호 키 : "); scanf_s("%d", &amo); FILE* fp = fopen(file, "r"); //파일오픈 fgets(loginpassword2, 15, fp); //메모장에서 password를 password2로 저장 fclose(fp); for (int i = 0; loginpassword2[i] != '\0'; i++) //password 복호화 { if (isalpha(loginpassword[i])) { if (loginpassword2[i] - amo < 'a') { int plus = 'a' + amo - 1 - loginpassword2[i]; loginpassword2[i] = 'z'; loginpassword2[i] -= plus; } else loginpassword2[i] -= amo; } else { if (loginpassword2[i] - amo < '0') { int plus = '0' + amo - 1 - loginpassword2[i]; loginpassword2[i] = '9'; loginpassword2[i] -= plus; } else loginpassword2[i] -= amo; } }
if (strcmp(loginpassword, loginpassword2) == 0) // 입력한 password와 복호화된 password를 비교 { printf_s("\n로그인완료\n"); system("Pause"); system("cls"); exit(1); } else { system("cls"); printf_s("비밀번호 혹은 암호키가 틀립니다.\n"); system("Pause"); system("cls"); main(); }}
void singup(char *singupid, char *singuppassword)
{ FILE *fp; char file[50]; int amo; printf_s("sing up. \n"); printf_s("==========================================. \n"); printf_s("아이디를입력하시오(15자이내). \n"); scanf_s("%s", singupid, 15); sprintf(file, "D:\\ID\\%s.txt", singupid); // 폴더의 이름과 경로를 file 에 저장 (아이디 = 폴더의 이름) fp = fopen(file, "w+"); fclose(fp); Sleep(1000); system("cls");
printf_s("sing up. \n"); printf_s("==========================================. \n"); printf_s("비밀번호를입력하세요(영문, 숫자 15자이내).\n"); scanf_s("%s", singuppassword, 15); printf_s("암호키를 입력하세요(1~5) \n"); scanf_s("%d", &amo);
for (int i = 0; singuppassword[i] != '\0'; i++) //password 암호화 { if (isalpha(singuppassword[i])) { if (singuppassword[i] + amo > 'z')
{ int less = singuppassword[i] - 'z';
singuppassword[i] = 'a' + amo - 1; singuppassword[i] += less; } else singuppassword[i] += amo; } else { if (singuppassword[i] + amo > '9')
{ int less = singuppassword[i] - '9';
singuppassword[i] = '0' + amo - 1; singuppassword[i] += less; } else singuppassword[i] += amo; } } fp = fopen(file, "w+"); fprintf(fp, "%s", singuppassword); fclose(fp); Sleep(1000); system("cls"); //완료창 printf_s("회원가입완료. \n"); printf_s("==========================================. \n"); Sleep(1000); system("cls"); main();}
'C++' 카테고리의 다른 글
[C++] 네이버 RSA 로그인 소스 (0) | 2020.04.14 |
---|