?? login.h
字號:
/* ==================================================== */
/* */
/* 學(xué)生宿舍管理系統(tǒng)Ver 1.00.1 源代碼 */
/* 文件名: Login.h */
/* 作用: 該部分實現(xiàn)對密碼的驗證. */
/* 版權(quán)所有 (c) 2007 張元龍 保留所有權(quán)利 */
/* */
/* ==================================================== */
#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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -