口令认证加部分审计功能(MD5加密口令存储)

//

 

// check.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
#include <windows.h>
#include <fstream>
#include<iostream>
#include<windows.h>
using namespace std;
#include "md5.h"

void update();
void record();

struct inf  //用户存储的信息结构
{
	char uid[50]; //用户名
	char password[100]; //密码
};
inf infor[300];  //最多有300个用户 
int i,n=0;       //全局变量n,用于表示是目前系统中用户数,目前是五个 
FILE *p;;

void init()    
{
	char uid[50],password[50];
	fstream file; 
	file.open("d:\\lib.txt",ios::in);
	if(!file);
	else
	{
		while(file>>uid>>password)     //将文件中的uid、password赋值给结构体 
		{
			strcpy(infor[n].uid,uid);
			strcpy(infor[n].password,password);
			//cout<<infor[n].uid<<"  "<<infor[n].password<<"  "<<endl;  //读出原来文件的uid、password
			n++;
		}
	}
	file.close();
}



int main()
{ 
	init();
	char uid[10]={'\0'},password[100]={'\0'} ;
	FILE *fp;
	fp=fopen("d:\\id.txt","r");
	fscanf(fp,"%s",uid);
	FILE *fp1;
	fp1=fopen("d:\\pwd.txt","r");
	fscanf(fp1,"%s",password);	
	for(i=0;i<n;i++)           //循环逐一匹配寻找用户名 
	{
		if(strcmp(infor[i].uid,uid)==0)
		{
			if(strcmp(MD5String(password),infor[i].password)==0)
			{
				MessageBox(NULL,TEXT("认证通过!"),TEXT("提示"),MB_OK | MB_SYSTEMMODAL);
				record();
				p=fopen("d:\\log.txt","a+") ;
				char buf[ ]="user check succeed\n\n";
				fwrite(uid,1, sizeof(uid), p);
				fwrite(buf, 1,sizeof(buf), p);
				fclose(p);
				printf("\n");
				break;

			}
			//认证失败 
			else
			{
				MessageBox(NULL,TEXT("认证失败!"),TEXT("提示"),MB_OK | MB_SYSTEMMODAL);
				record();
				p=fopen("d:\\log.txt","a+") ;
				char buf[ ]="user check failed\n\n";
				fwrite(uid,1, sizeof(uid), p);
				fwrite(buf, 1,sizeof(buf), p);
				fclose(p);
				break;
			}
		}
	}
	if(i==n)
	{
		MessageBox(NULL,TEXT("该用户名不存在!"),TEXT("提示"),MB_OK | MB_SYSTEMMODAL);
		record();
		p=fopen("d:\\log.txt","a+") ;
		char buf[ ]="user check failed\n\n";
		fwrite(uid,1, sizeof(uid), p);
		fwrite(buf, 1,sizeof(buf), p);
		fclose(p);
	}

}

void record()
{
	FILE *fp;
	time_t t;
	struct tm *st;
	char buffer[1024];
	int index=0;
	fp=fopen("d:\\log.txt","r");
	if (fp!=NULL)
	{
		while(!feof(fp))
			fgets(buffer,1024,fp);
		//sscanf(buffer,"%d",&index);
		//index++;
		fclose(fp);
	}
	fp=fopen("d:\\log.txt","a");
	t=time(NULL);
	st=localtime(&t);
	fprintf(fp," %d-%d-%d %2d:%2d:%2d\n",st->tm_year+1900,st->tm_mon+1,st->tm_mday,st->tm_hour,st->tm_min,st->tm_sec);
	index++;
	fflush(NULL);

}




在这里插入代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值