⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 login.h

📁 这是毕业设计的程序主要是图书管理功能,希望大家给给意见
💻 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 + -