上一篇 | 下一篇

为应用程序添加口令

发布: 2008-6-26 20:29 | 作者: admin | 来源: | 查看: 0次

width="84%">为应用程序添加口令

北京燕山石化计算中心软件开发部

吕彤

----不知您是否曾为数据被人盗用而苦恼;不知您是否因软件没有一套严密的安全防护系统而不敢放心使用;不知您是否曾经费尽心机作过数据加密但是对加密效果大不满意?如果您曾有过诸如此类的困惑的话,Delphi为您提供了一个简单而出色的解决办法。

----这似乎是在吹嘘Delphi的功能,但Delphi的所有版本无一例外地提供了对其Paradox数据库的口令设置,设置过口令的Paradox数据库的数据也被加密而无法用其它工具查看。这一特性使得我们用Delphi提高应用程序的安全性变得简单易行。不过要说明的是:本方法所论的加密并非万无一失,因为电脑黑客们无所不在,他们可以轻易地打破你的任何加密方法,但就一般人而言本文所论的加密方法就足够了。

----一、首先,一套软件的安全性包括对数据访问的限制。未授权的用户不能访问其中的某些数据或者根本不能进入应用程序。据此可以设计一个数据表,用来存储用户的级别、用户的登录名称以及用户密码,不妨将此表命名为PARA.DB。PARA.DB的结构如下:

字段名字段类型字段长度注释

OwnerA20应用程序名

UserA10用户名

UserLevelA10用户级别

PasswordIDA10登录口令

----考虑到您开发的应用程序可能不止一个,所以Owner字段用来识别PARA.DB所属的应用程序以防止一个PARA.DB能适用于所有应用程序;后三个字段用来给用户设置使用权限。所有的字段都十分重要,但是如果您的应用程序是单用户的、只需要一个简单的口令的话则可以省略User、Userlevel甚至Owner字

段而只留一个登录口令字段PasswordID。

----二、然后,我们需要两个函数:

----1、GetPassword-读取用户的输入,并判断口令的正确性和用户的级别。

function GetPassword : Boolean;

{根据返回值来判断是否输入了正确口令}

var

PasswordForm: TPasswordForm;{口令登录屏幕}

begin

Result := False;

PasswordForm := TPasswordForm.Create(Self);

if Passwordform.TablePara.fields[0].asstring = '' then

{如果没有任何口令则不启动口令登录屏幕}

begin

Result := True;

PasswordForm.Free;

end

else

try

with PasswordForm do

begin

if ShowModal = mrOK then

if EditInputPass.Text < > TablePara.Fields .AsString then

Application.MessageBox('密码错误!', '错误', mb_OK + mb_iconstop)

else

begin

Result := True;

Table1.Close;

end;

finally

PasswordForm.Free;

end;

end;

2、SetPassword -设置用户级别和登录口令。

function SetPassword : Boolean;

var

Chgpassform : TChgpassform;

begin

Result := False;

Chgpassform := TChgpassform.Create(Self);

if Chgpassform.ShowModal = mrOK then

begin

With TablePara do

beign

{写入库中}

Edit;

Fields .AsString := EditPasswordID.Text;

Post; Close;

end;

Result := True;

Chgpassform.free;

end;

end;

----(注:限于篇幅,以上均为函数程序示意,若直接运行可能有误。)

----三、为了不在每一个应用程序中都重新写一遍函数代码,我们可以将这两个函数放进一个DLL文件chkpword.dll中,并在chkpword.dpr的projectsource中作如下声明:

expor GetPassword,SetPassword;

在包含该函数体的unit中分别作如下声明:

function GetPassword:Boolean;export;

function SetPassword:Boolean;export;

四、在应用程序的有关unit中作如下声明:

function GetPassword:Boolean;far;external'CHKPWORD';

function SetPassword:Boolean;far;external'CHKPWORD';

则引用方法为:

unit{unit名};

uses

{uses说明}

function GetPassword:Boolean;

far;external'CHKPWORD';

begin

if getpassword then

{没有设置口令或得到正确的口令后才执行程序}

begi

字号: | 推荐给好友

21/212>

评分:0

我来说两句