C 언어 구현 암호 북

6384 단어 C 언어암호 원본
본 논문 의 사례 는 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); } }
기능 은 쓰 지 않 습 니 다.소스 코드 가 올 라 왔 습 니 다.다음은 실행 결과 입 니 다.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기