📄 login.h
字号:
/* ==================================================== */
/* */
/* 学生宿舍管理系统Ver 1.00.1 源代码 */
/* 文件名: Login.h */
/* 作用: 该部分实现对密码的验证. */
/* 版权所有 (c) 2007 张元龙 保留所有权利 */
/* */
/* ==================================================== */
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include "MD5.h"
#ifndef LoginDefined
#define LoginDefined
bool ReadPassword(char Passbuf[]){
FILE *fp=fopen("Dat\\Pass.md5","r");
if (!fp) return false;
fscanf(fp,"%s",Passbuf);
fclose(fp);
return strlen(Passbuf)==34;
}
bool WritePassword(char Passbuf[]){
FILE *fp=fopen("Dat\\Pass.md5","w");
if (!fp) return false;
fprintf(fp,"%s",Passbuf);
fclose(fp);
return true;
}
void HexToDat(char InText[],char OutText[],int len){
int i;
for (i=0;i<len;i++)
InText[i]-=InText[i]>'9'?'a'-10:'0';
for (i=0;i<len;i+=2){
OutText[0]=InText[i]<<4 | InText[i+1];
OutText++;
}
}
void DatToHex(char InText[],char OutText[],int len){
int i;
char buf[4];
OutText[0]=0;
for (i=0;i<len;i++){
if ((Dword)InText[i]<0x10) strcat(OutText,"0");
sprintf(buf,"%x",((Dword)InText[i]) & 0xFF);
strcat(OutText,buf);
}
}
bool login(char *Password){
int len=strlen(Password);
if (len>=54) return false;
char buf[64];
char Passbuf[64];
if (!ReadPassword(buf)) return false;
HexToDat(buf+2,Passbuf,32);
strcpy(buf+2,Password);
MD5(buf,len+2);
return memcmp(buf,Passbuf,16)==0;
}
bool SetPassword(char *Password){
int len=strlen(Password);
if (len>=54) return false;
char buf[64];
char Passbuf[64];
char key1=rand()%26+'a'; /*生成2个随机字母进行加密*/
char key2=rand()%26+'a';
buf[0]=Passbuf[0]=key1;
buf[1]=Passbuf[1]=key2;
strcpy(buf+2,Password);
MD5(buf,len+2);
DatToHex(buf,Passbuf+2,16);
return WritePassword(Passbuf);
}
void LoginInit(){
srand( (unsigned)time( NULL ) );
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -