C 언어 구현 암호 북
기능 요약:
1.계 정 로그 인(비밀번호 인증,세 번 계 정 잠 금)
2.기능 선택:1,모든 비밀번호 확인 2,비밀번호 추가 3,비밀번호 삭제 4,비밀번호 수정 5,비밀번호 조회 6,잠 금 해제 7,로그 인 종료
3.비밀번호 저장,파일 암호 화
4.흐름 도:
데이터 정의 부분
#pragma once
//
#define NUM 100 //
extern int g_nNum; //
extern int g_lock_flag; //
/* ****************************/
typedef struct _PASSWORD
{
char website[100]; //
char userName[40];
char passWord[20];
char note[100];//
}PASSWORD,*PPASSWORD;
/* *************************************/
#define 1
#define 2
#define 3
#define 4
#define 5
#define 6
#define 7
인터페이스 와 사용자 상호작용
int main()
{
/* **********************************************************************/
g_nNum = 0; //
g_lock_flag = 1; //
/* ************************************************************************/
PPASSWORD pPwd = nullptr; //
int nCount = 0; //
int op = 0; //
/* , , *****************************************************/
readInfo(&pPwd, &nCount);
/* ==> ****************************************************************/
if (!g_lock_flag)
{
printf(" , !
");
unLock(pPwd, nCount);
}
else
{
login(pPwd, &nCount);
}
/* , *********************************************************************/
/*1、 2、 3、 4、 5、 6、 7、 */
/* , , , */
while (1)
{
Dlg_print();
printf(" : ");
scanf_s("%d", &op);
switch (op)
{
case : searchAllInfo(pPwd,nCount); break;
case :insertInfo(pPwd, &nCount); break;
case :deleInfo(pPwd, &nCount); break;
case :reviseInfo(pPwd, nCount); break;
case :queryInfo(pPwd, nCount); break;
case :unLock(pPwd, nCount); break;
case :admExit(pPwd, nCount); break;
}
}
return 0;
}
읽 기 및 저장
/* , */
void readInfo(PPASSWORD *ppPwd, int *pnCount)
{
FILE *fp = NULL;
errno_t err;
if ((err = fopen_s(&fp,"password.txt", "rb")) != 0)
{
//
printf(" , ……
");
// ,
*ppPwd = (PPASSWORD)malloc(sizeof(PASSWORD)*NUM);
memset(*ppPwd, 0, sizeof(PASSWORD)*NUM);
g_nNum = NUM;
return;
}
fread(pnCount, sizeof(int), 1, fp);
fread(&g_lock_flag, sizeof(int), 1, fp);
g_nNum = *pnCount;
*ppPwd = (PPASSWORD)malloc(sizeof(PASSWORD)*g_nNum);
memset(*ppPwd, 0, sizeof(PASSWORD)*g_nNum);
size_t rlen = fread(*ppPwd, sizeof(PASSWORD), g_nNum, fp);
/*printf(" :%d
", *pnCount);
printf(" :%d
", g_lock_flag);
printf(" :%d
", g_nNum);*/
/* */
if (rlen != g_nNum)
{
printf("
");
fclose(fp);
return;
}
size_t byteSize = sizeof(PASSWORD)*g_nNum;
char *buf = (char*)*ppPwd;
for (size_t i = 0; i < byteSize; i++)
{
buf[i] = (buf[i]-i)^8;
}
fclose(fp);
}
/* , */
void saveInfo(PASSWORD pwd[], int nCount)
{
FILE *fp = NULL;
errno_t err;
if ((err = fopen_s(&fp,"password.txt", "wb+")) != 0)
{
printf("
");
exit(1);
}
fwrite(&nCount, sizeof(int), 1, fp);
fwrite(&g_lock_flag, sizeof(int), 1, fp);
/* */
size_t byteSize = sizeof(PASSWORD)*nCount;
char *buf = (char*)malloc(byteSize);
memcpy_s(buf, byteSize, pwd, byteSize);
for (size_t i = 0; i < byteSize; i++)
{
buf[i] = (buf[i] ^ 8) + i;
}
size_t rlen = fwrite(buf, sizeof(PASSWORD), nCount, fp);
if (rlen != nCount)
{
printf("
");
}
else
{
printf("
");
}
fclose(fp);
system("pause");
system("cls");
}
상륙 하 다.
void login(PASSWORD pwd[],int *pnCount)
{
char admName[40] = { 0 };
char admPwd1[20] = { 0 };
char admPwd2[20] = { 0 };
printf("*******************************************
");
printf("------------- 1024 ------------
");
printf(" : ");
scanf_s("%s", admName,40);
printf(" : ");
scanf_s("%s", admPwd1,20);
if (strlen(pwd[0].userName) == 0||g_nNum == 0)
{
// --- ---
printf(" : ");
scanf_s("%s", admPwd2,20);
if(strcmp(admPwd1, admPwd2)!=0)
{
printf(" ,
");
exit(1);
}
strcpy_s(pwd[0].website, 100, " ");
strcpy_s(pwd[0].userName, 40, admName);
strcpy_s(pwd[0].passWord, 20, admPwd1);
strcpy_s(pwd[0].note, 100, " ");
printf("
");
(*pnCount)++;
saveInfo(pwd, *pnCount);
}
else if (strcmp(admName, pwd[0].userName) == 0)
{
// ,
int i = 0;
while (strcmp(admPwd1, pwd[0].passWord) != 0)
{
i++;
if (i >= 3)
{
g_lock_flag = 0;
printf(" ! !
");
exit(1);
}
printf(" , : ");
scanf_s("%s", admPwd1,20);
}
}
else
{
printf("
");
system("pause");
exit(1);
}
}
기능 은 쓰 지 않 습 니 다.소스 코드 가 올 라 왔 습 니 다.다음은 실행 결과 입 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.