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

📄 mainunit.pas

📁 采用加密算法进行管理用户密码采用加密算法进行管理用户密码
💻 PAS
字号:
unit MainUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls,IniFiles, ExtCtrls,md5;
 
type
  TFrmPassAdmin = class(TForm)
    RadioGroup5: TRadioGroup;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    EdtOldPass: TEdit;
    EdtNewPass1: TEdit;
    EdtNewPass2: TEdit;
    Label11: TLabel;
    BtnModiPass: TSpeedButton;
    BtnClose: TSpeedButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BtnModiPassClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BtnCloseClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  function GetPassword(nType:byte):String;   stdcall;
  procedure Writepassword(nType:byte;Password:String);   stdcall;
  function IsAdminiStationPassWord(Password:String):boolean;  stdcall;
  function ConfirmPassWord(nType:byte;Password:String):boolean;  stdcall;
  function Encrypt_MD5(Source:PChar;Length:Integer):PChar;stdcall;
var
  DllApplication: TApplication;
  gStrAppPath:String;
implementation

{$R *.dfm}

//------------------------------------------------------------------------------
//功能:从配置文件中读出指定人员的密码
//参数: ntype 人员类型 0 超级管理员,1 数据库修改,2地址修改
//       超级管理员可以修改任何人的密码 地址和数据库
//返回值:指定人员的密码,初始时密码为空,则表示用默认的密码
function GetPassword(nType:byte):String;   stdcall;
var

  mIni:TIniFile;
  StrIdent:String;
begin
  gStrAppPath :=ExtractFilePath(Application.ExeName); 
  try
    mIni:=TIniFile.Create(gStrAppPath+'PassAdmin.ini');
    StrIdent:='Pass'+IntToStr(nType);
    Result:=mIni.ReadString('PassWord',StrIdent,'');

  finally
    mIni.Free ;
  end;
end;
//------------------------------------------------------------------------------
//功能:将指定人员的密码加密后写入配置文件中
//参数: ntype 人员类型 0 超级管理员,1 数据库修改,2地址修改
//       超级管理员可以修改任何人的密码 地址和数据库
//       Password 密码
//返回值:无
procedure Writepassword(nType:byte;Password:String);   stdcall;
var
  mIni:TIniFile;
  StrIdent:String;
  StrMD5Pass:String;
begin
  gStrAppPath :=ExtractFilePath(Application.ExeName);
  try
    mIni:=TIniFile.Create(gStrAppPath+'PassAdmin.ini');
    StrIdent:='Pass'+IntToStr(nType);
    StrMD5Pass:=MD5Print(MD5String(Password));
    mIni.WriteString('PassWord',StrIdent,StrMD5Pass);

  finally
    mIni.Free ;
  end;
end;
//功能:验证指定密码是不是超级管理员的
//参数:
//       Password 待验证的密码
//返回值:正确返回true,否则返回false
function IsAdminiStationPassWord(Password:String):boolean;  stdcall;
var
  mIni:TIniFile;

  StrConfirm:String;
  StrReadPass:String;
begin
  gStrAppPath :=ExtractFilePath(Application.ExeName);
  try
    mIni:=TIniFile.Create(gStrAppPath+'PassAdmin.ini');

    StrReadPass:=mIni.ReadString(gStrAppPath+'PassWord','Pass0','');
    if StrReadPass='' then
    begin

         Result:=AnsiSameStr(Password,'8907400willsun');

    end
    else
    begin
      StrConfirm:= MD5Print(MD5String(Password));
      Result:=AnsiSameStr(StrConfirm,StrReadPass);
    end;
  finally
    mIni.Free ;
  end;
end;
//功能:验证指定人员的密码
//参数: ntype 人员类型 0 超级管理员,1 数据库修改,2地址修改
//       超级管理员可以修改任何人的密码 地址和数据库
//       Password 待验证的密码
//返回值:正确返回true,否则返回false
function ConfirmPassWord(nType:byte;Password:String):boolean;  stdcall;
var
  mIni:TIniFile;
  StrIdent:String;
  StrConfirm:String;
  StrReadPass:String;
begin
  gStrAppPath :=ExtractFilePath(Application.ExeName);
  try
    mIni:=TIniFile.Create(gStrAppPath+'PassAdmin.ini');
    StrIdent:='Pass'+IntToStr(nType);
    StrReadPass:=mIni.ReadString('PassWord',StrIdent,'');
    if StrReadPass='' then
    begin
      case nType of
         0:Result:=AnsiSameStr(Password,'8907400willsun');
         1:Result:=AnsiSameStr(Password,'123456');
         2:Result:=AnsiSameStr(Password,'willsun');
      end;
    end
    else
    begin
      StrConfirm:= MD5Print(MD5String(Password));
      Result:=AnsiSameStr(StrConfirm,StrReadPass);
    end;
  finally
    mIni.Free ;
  end;
end;
function Encrypt_MD5(Source:PChar;Length:Integer):PChar;stdcall;
var
  Str:String;

begin
  Str:=Copy(Source,1,Length);
  Str:=  MD5Print(MD5String(Str));
  Result:=PChar(Str);

end;
procedure TFrmPassAdmin.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   Action:=caFree;
end;

procedure TFrmPassAdmin.BtnModiPassClick(Sender: TObject);
var
  StrPass1,StrPass2,StrOldPass:String;
  bIsAdmin:boolean;
begin
   StrOldPass:=Trim(EdtOldPass.Text);
   StrPass1:=Trim(EdtNewPass1.Text);
   StrPass2:=Trim(EdtNewPass2.Text);
   BtnModiPass.Enabled := false;
   bIsAdmin:= IsAdminiStationPassWord(StrOldPass);
   if not  bIsAdmin then
   begin
    if not ConfirmPassWord(RadioGroup5.ItemIndex,StrOldPass) then
    begin
      EdtOldPass.SetFocus ;
      Messagedlg('旧密码不正确,请重新输入',mtConfirmation,[mbOk],0);
      BtnModiPass.Enabled := true;
      exit;
    end;
   end;

   if not AnsiSameStr(StrPass1,StrPass2) then
   begin
      Messagedlg('两次密码输入不一致,请重新输入',mtConfirmation,[mbOk],0);
      BtnModiPass.Enabled := true;
      exit;
   end;
   if Length(StrPass1)<4 then
   begin
      Messagedlg('密码长度必须大于4',mtConfirmation,[mbOk],0);
      BtnModiPass.Enabled := true;
      exit;
   end;
   Writepassword(RadioGroup5.ItemIndex,StrPass1);
   Messagedlg('密码修改成功,请记住密码',mtConfirmation,[mbOk],0);
   BtnModiPass.Enabled := true;
   Close;
end;

procedure TFrmPassAdmin.FormCreate(Sender: TObject);
begin
  gStrAppPath :=ExtractFilePath(Application.ExeName);
end;

procedure TFrmPassAdmin.BtnCloseClick(Sender: TObject);
begin
  Close;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -