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;
}
}
총화프로그램 에 결함 이 있 습 니 다.처음으로 블 로 그 를 쓰 게 되 었 습 니 다.많은 양해 바 랍 니 다!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.