C 언어 구현 암호 원본 작은 항목

9760 단어 C 언어암호 원본
머리말
C 언어 를 배 운 지 꽤 되 었 는데 마침 암호 본의 작은 프로젝트 를 만 들 었 을 때 그것 을 공유 했다.
2.사고 와 원리
암호 본 은 이름 이 알려 진 바 와 같이 계 정 비밀 번 호 를 저장 하고 비망록 역할 을 하 는 노트 입 니 다.메모 해 야 할 데 이 터 를 암호 화 를 통 해 텍스트 파일 에 저장 하고 열 린 텍스트 파일 을 암호 화 텍스트 로 하려 면 소프트웨어 를 통 해 저 장 된 데 이 터 를 보고 안전성 을 높 여야 합 니 다.(소프트웨어 가 시작 암 호 를 설계 하여 세 번 후 자동 으로 종료 합 니 다)
프로젝트 목표:
계 정 비밀 번 호 를 저장 하고 종료 후 소프트웨어 데 이 터 를 열 면 잃 어 버 리 지 않 습 니 다간단 한 암호 화 진행계좌번호
계 정 비밀번호 데 이 터 를 수정 할 수 있 습 니 다.
조건 에 따라 데 이 터 를 삭제 할 수 있 습 니 다지식 은 배열,파일 작업 의 사용 과 간단 한 암호 화 와 관련된다.
소프트웨어 의 부분 캡 처 는 다음 과 같다.

메 인 메뉴

데이터 추가

데이터 삭제

조회 데이터

모든 데이터
실현
1.헤더 파일 및 데이터 정의
암호 본의 작은 항목 에서 저 는 데 이 터 를 저장 하 는 네 개의 배열,저 장 된 계 정 비밀 번 호 를 저장 하 는 사이트,저 장 된 계 정,저 장 된 비밀번호 와 비 고 를 설립 했 습 니 다.현재 암호 본 에 사용 되 는 항목 수 를 계산 하기 위해 전역 변 수 를 정의 합 니 다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
//      ,      、  、  、    
char webSite[100][20];
char userName[100][20];
char passWord[100][20];
char reMark[100][20];
//        
int g_count = 0;
2.프로그램의 전체 프레임 워 크

int main(void)
{
 InitInfo();
 int nChoice = 1;
 
 StartPassWord();
 
 while (nChoice)
 {
 printf("*********************************       *********************************
"); printf(" :
"); printf(" 1、
"); printf(" 2、
"); printf(" 3、
"); printf(" 4、
"); printf(" 5、
"); printf(" 6、
"); printf("********************************************************************************
"); scanf_s("%d", &nChoice); switch (nChoice) { case 1: { AddInfo();// }break; case 2: { DelInfo(); // }break; case 3: { EditInfo();// }break; case 4: { FindInfo();// }break; case 5: { ReadAllInfo();// }break; case 6: { nChoice = 0;// }break; } } printf(" !
"); system("pause"); return 0; }
3.함수 설명

//       
void StartPassWord();
//    
void AddInfo();
//    
void DelInfo();
//    
void EditInfo();
//    
void FindInfo();
//      
void ReadAllInfo();
//    
void SaveInfo();
//     
void InitInfo();
4.각 함수 의 실현

//    
void AddInfo()
{
 printf("          :");
 scanf_s("%s", webSite[g_count], 20);
 printf("          :");
 scanf_s("%s", userName[g_count], 20);
 printf("          :");
 scanf_s("%s", passWord[g_count], 20);
 printf("          :");
 scanf_s("%s", reMark[g_count], 20);
 g_count++;
 SaveInfo();
 InitInfo();
 system("pause");
 system("cls");
}
 
//    
void ReadAllInfo()
{
 FILE *pfile;
 if (fopen_s(&pfile, "data.i", "r") != 0)
 {
 printf("file open fail");
 exit(1);
 }
 
 fscanf_s(pfile, "    %d
", &g_count); printf(" %d
", g_count); for (int i = 0; i < g_count; i++) { printf(" %d :
", i + 1); printf(" :%s, :%s, :%s, :%s", webSite[i], userName[i], passWord[i], reMark[i]); printf("
"); } fclose(pfile); system("pause"); system("cls"); } // void SaveInfo() { for (int j = 0; j < g_count; j++) { for (int m = 0; m < 20; m++) { webSite[j][m] ^= 5; userName[j][m] ^= 5; passWord[j][m] ^= 5; reMark[j][m] ^= 5; } } FILE *pfile; if (fopen_s(&pfile, "data.i", "w") != 0) { printf("file open fail"); exit(1); } fseek(pfile, 0, SEEK_SET); fprintf(pfile, " %d
", g_count); for (int i = 0; i < g_count; i++) { fwrite(webSite[i], 20, 1, pfile); fwrite(userName[i], 20, 1, pfile); fwrite(passWord[i], 20, 1, pfile); fwrite(reMark[i], 20, 1, pfile); fprintf(pfile, "
"); } fclose(pfile); } // void DelInfo() { char aTemp[20]; int nFind = 0; int nIndex = 0; printf(" :
"); scanf_s("%s", aTemp, 20); for (; nIndex < g_count; nIndex++) { if (strcmp(aTemp, webSite[nIndex]) == 0) { nFind = 1; break; } } if (nFind == 1) { for (int i = nIndex; i < g_count; i++) { strcpy_s(webSite[i], 20, webSite[i + 1]); strcpy_s(userName[i], 20, userName[i + 1]); strcpy_s(passWord[i], 20, passWord[i + 1]); strcpy_s(reMark[i], 20, reMark[i + 1]); } g_count--; SaveInfo(); InitInfo(); printf("
"); } else { printf(" !
"); } system("pause"); system("cls"); } // void InitInfo() { FILE *pfile; if (fopen_s(&pfile, "data.i", "r") != 0) { printf(" data.i !"); system("pause"); exit(1); } fscanf_s(pfile, " %d
", &g_count); for (int i = 0; i < g_count; i++) { fread(webSite[i], 20, 1, pfile); fread(userName[i], 20, 1, pfile); fread(passWord[i], 20, 1, pfile); fread(reMark[i], 20, 1, pfile); fscanf_s(pfile, "
"); } for (int j = 0; j < g_count; j++) { for (int m = 0; m < 20; m++) { webSite[j][m] ^= 5; userName[j][m] ^= 5; passWord[j][m] ^= 5; reMark[j][m] ^= 5; } } fclose(pfile); } // void FindInfo() { char aTemp[20]; int nFind = 0; printf(" :
"); scanf_s("%s", aTemp, 20); for (int nIndex = 0; nIndex < g_count; nIndex++) { if (strcmp(aTemp, webSite[nIndex]) == 0) { nFind = 1; } if (nFind == 1) { printf(" :%s, :%s, :%s, :%s
", webSite[nIndex], userName[nIndex], passWord[nIndex], reMark[nIndex]); break; } } if (nFind == 0) { printf(" !
"); } system("pause"); system("cls"); } // void EditInfo() { char aTemp[20]; int nFind = 0; printf(" :
"); scanf_s("%s", aTemp, 20); for (int nIndex = 0; nIndex < g_count; nIndex++) { if (strcmp(aTemp, webSite[nIndex]) == 0) { nFind = 1; } if (nFind == 1) { printf(" :"); scanf_s("%s", userName[nIndex], 20); printf(" :"); scanf_s("%s", passWord[nIndex], 20); printf(" :"); scanf_s("%s", reMark[nIndex], 20); printf(" :%s, :%s, :%s, :%s
", webSite[nIndex], userName[nIndex], passWord[nIndex], reMark[nIndex]); SaveInfo(); break; } } if (nFind == 0) { printf(" !
"); } system("pause"); system("cls"); } // void StartPassWord() { char spw[10] = "abcd"; // char write[10] = ""; int nSuccess = 0; for (int i = 1; i <= 3; i++) { printf(" :
"); scanf_s("%s", write, 10); if (strcmp(write, spw) == 0) { nSuccess = 1; break; } else { printf(" ! %d
", 3 - i); system("pause"); system("cls"); } } if (nSuccess == 1) { printf(" !
"); } else { printf(" !
"); system("pause"); exit(1); } system("pause"); system("cls"); }
5.암호 화
이 또는 암호 화:이 또는 일종 의 연산 방식 으로 C 언어 에서^기호 로 암호 화 에 사용 할 수 있 습 니 다.
예 를 들 어 프로젝트 의 실현

for (int j = 0; j < g_count; j++)
 {
 for (int m = 0; m < 20; m++)
 {
 webSite[j][m] ^= 5;
 userName[j][m] ^= 5;
 passWord[j][m] ^= 5;
 reMark[j][m] ^= 5;
 }
 }
총화
프로그램 에 결함 이 있 습 니 다.처음으로 블 로 그 를 쓰 게 되 었 습 니 다.많은 양해 바 랍 니 다!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기