请教一个有关登陆的问题 可以将密码放在一个*.ini文件中,每次等录时读一下这个文件就可以了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以将密码放在一个*.ini文件中或者放在注册表中或者放在数据库中 继续请教各位:如果想放在.ini文件中,又如何放进去呢?谢谢!! 写到注册表中当然,有自己的加密方式,写到Config.cfg中也可以,反正显示是乱吗的 比如你的ini文件为me.ini,内容如下:[root]my=self在unit中use inifilesvar fini:tinifile;初始化:fini:=TIniFile.Create(ExtractFilePath(Paramstr(0))+'me.ini');//paramstr(0)返回应用程序所在的路径读操作:Fini.ReadString('root','my','')写操作:Fini.WriteString('root','my','self') 1 ini2 或者放在注册表中3 或者放在数据库中 加密问题: 假定要保存的是一字符串:str,值为:abc123 1.加密处理: for i:=1 to Length(str) do str[i]:=Chr(Ord[str[i]]+1); // str变为bcd234 2.保存 3.取出时解密: for i:=1 to Length(str) do str[i]:=Chr(Ord[str[i]]-1); // str还原为abc123上面就是一个非常简单的加密解密算法,当然只是示例而已! 我也有个疑问:如果config文件被用户删除了,注册表中的也被清除了,程序该怎么处理(很多程序不用安装,与刚拷上去的应用程序的环境是一样的,若当作第一次运行处理那设置登陆密码又有什么用?)? 呵呵,我觉得你应该在保存密码到ini文件中去的时候,对密码加密,在取出来的时候在对它解密,然后跟Edit.Text比较,你的问题cobi和zswang(伴水)解释的很清楚。提供一种加密算法function Encrypt(Password: String): String;var Temp: String; S: String; Len: Integer; I: Integer;const EncryptStr='*&1243jghd{>?\^$,777,~';//校验密码,可以自己随便定义begin Temp:= ''; Password:= Edit1.Text; Len:= length(Password); for I:=1 to Len do begin S:= Chr(Ord(Password[I]) xor Ord(Encryptstr[I]));//自定义加密公式, Temp:= Temp+S; end; Result:=Temp;end; 上面的密码算法是我自己乱想的,另外 S:=Chr(Ord(Password[I]) xor Ord(Encryptstr[I]));这一句你也可以自己定义,我是为了方便才这样写的,你可以把它定义为很复杂,比如 S:=Chr(Ord(Password[I]) xor Ord(Encryptstr[I])- Shl(EncryptStr[I]) and Ord(...) or Byte ......);在解密的时候也调用这个函数,就行了 上面的password:=Edit1.text去掉,刚才我写的太快,:),笔误 我想实现对200台机器的监控,该怎么做呢? 请问怎样在打印报表时统计一列数据的总和并显示出来? winexec怎么不能调用move命令? 急求各位高手这样的程序该如何做 重发!再顶!困扰多日的DELPHI+SQL SERVER主从表查询排序问题! 动态ADO连接 QuickRep在哪里? 求助大家有没有类似OD或Winhex的16进制编辑控件啊? 小难题 小问题,但是我拿它没折!!您呢? ■■在广州从事软件开发或编程爱好者请进■■■ 如果做一個圖片數據不在數據裡面的報表,請高手幫忙!
当然,有自己的加密方式,写到Config.cfg中也可以,反正显示是乱吗的
[root]
my=self在unit中use inifiles
var
fini:tinifile;
初始化:
fini:=TIniFile.Create(ExtractFilePath(Paramstr(0))+'me.ini');//paramstr(0)返回应用程序所在的路径
读操作:
Fini.ReadString('root','my','')
写操作:
Fini.WriteString('root','my','self')
2 或者放在注册表中3 或者放在数据库中
假定要保存的是一字符串:str,值为:abc123
1.加密处理:
for i:=1 to Length(str) do
str[i]:=Chr(Ord[str[i]]+1);
// str变为bcd234
2.保存
3.取出时解密:
for i:=1 to Length(str) do
str[i]:=Chr(Ord[str[i]]-1);
// str还原为abc123
上面就是一个非常简单的加密解密算法,当然只是示例而已!
如果config文件被用户删除了,注册表中的也被清除了,程序该怎么处理(很多程序不用安装,与刚拷上去的应用程序的环境是一样的,若当作第一次运行处理那设置登陆密码又有什么用?)?
function Encrypt(Password: String): String;
var
Temp: String;
S: String;
Len: Integer;
I: Integer;
const
EncryptStr='*&1243jghd{>?\^$,777,~';//校验密码,可以自己随便定义
begin
Temp:= '';
Password:= Edit1.Text;
Len:= length(Password);
for I:=1 to Len do
begin
S:= Chr(Ord(Password[I]) xor Ord(Encryptstr[I]));//自定义加密公式,
Temp:= Temp+S;
end;
Result:=Temp;
end;
上面的密码算法是我自己乱想的,另外 S:=Chr(Ord(Password[I]) xor Ord(Encryptstr[I]));这一句你也可以自己定义,我是为了方便才这样写的,你可以把它定义为很复杂,
比如 S:=Chr(Ord(Password[I]) xor Ord(Encryptstr[I])- Shl(EncryptStr[I]) and
Ord(...) or Byte ......);在解密的时候也调用这个函数,就行了