程序中设置一个管理员密码通常保存在哪?(50分)

  • 主题发起人 主题发起人 PLWang
  • 开始时间 开始时间
看的几个简单的例子都是直接用一个config.cfg保存 好象不太可靠 有没别的方法?
 
可以保存在程序自身中!
 
oh 有源码吗 给看看
 
我通常是保存在数据库中,然后再为这个数据库设置一个密码
 
同车超一样,不过会留一手写一个密码进程序时面
 
对字符串加密,然后保存到注册表中
字符串加密:
unction cryptstr(const s:string; stype: dword):string;
var
i: integer;
fkey: integer;
begin
result:='';
case stype of
0:
begin
randomize;
fkey := random($ff);
for i:=1 to length(s) do
result := result+chr( ord(s) xor i xor fkey);
result := result + char(fkey);
end;
1:
begin
fkey := ord(s[length(s)]);
for i:=1 to length(s) - 1 do
result := result+chr( ord(s) xor i xor fkey);
end;
end;
读写注册表:
var
Registry: TRegistry;
S : string;
begin
Registry:= TRegistry.Create;
try
begin
Registry.RootKey :=MyRootKey; // HKEY_CURRENT_USER;
Registry.OpenKey(MYOpenKey,false); // Registry.OpenKey('/Software/MachineAdministrator',false);
S := Registry.ReadString(RegKey);
end
finally
begin
Registry.CloseKey;
Registry.Free;
end;
if Trim(S)='' then Result := Default
else Result := S;
end;

end;

procedure htwWriteRegisry(RegKey :string ;asValueTobewrited : string; MyRootKey : Hkey; MyOpenKey :string );
var
Registry: TRegistry;
begin
Registry:= TRegistry.Create;
try
begin
Registry.RootKey :=MyRootKey; // HKEY_CURRENT_USER;
Registry.OpenKey(MyOpenKey,true); //Registry.OpenKey('/Software/MachineAdministrator',true);
Registry.WriteString(RegKey,asValueTobewrited);
end
finally
begin
Registry.CloseKey;
Registry.Free;
end;
end;
end;


 
加密或者用RBDMS的密码
 
写到数据库中
 
如果有多用户而且可以修改密码一般是放在数据库中并加密
 
注释:凡是以上说出来了的方法都不安全:-)
反正都不能保证非常安全,那我还是乱说两句吧:
反正我觉得一涉及到密码的验证就不是很安全
特别是对于9X的系统,很容易被SICE跟踪出来
所以最好不要用密码,如果一定要用,先加密
密码然后再比较,千万不要先解密密码然后比较
至于存放的地方,可以放在注册表里面(当然
先加密),但是会被regmon察觉,也可以放在
放在自己(exe)身上,但是有可能filemon察觉
但是还是比注册表安全,因为filemon只能发现
文件被修改,但是不能具体知道哪个地方被修改
这是和regmon最大的不同。
 
保存在下一个版本中,哈哈。。。
 
接受答案了.
 
后退
顶部