如何在本地为多用户应用程序存储密码?

Lit*_*per 4 delphi passwords delphi-7

我想创建一个多用户应用程序,但我不知道如何保存和读取加密密码.

procedure SavePass(Password: WideString);
var
  Pass: TIniFile;
begin
  Pass := TIniFile.Create(ChangeFileExt(Application.ExeName, '.PASS'));
  Pass.WriteString('Users', 'USERNAME', Password);
  Pass.Free;
Run Code Online (Sandbox Code Playgroud)

密码必须存储在计算机上.这有效,但使用它来保存密码是愚蠢的.散列密码也很好.

Wou*_*ick 9

如果连接软件接受散列密码,则不会阻止窃取散列密码的人员进行连接.它所要做的只是隐藏真实密码.

此外,如果您连接的软件不接受散列密码(数据库,网站等),您将必须以这样的方式存储您的密码,以便您可以将其恢复到原始状态.哈希版本不会帮助你.

如果你想扰乱你的存储,以便人类无法读取文件,你可以使用Windows.EncryptFile()Windows.DecryptFile().在新德尔福是一个的整齐包裹成IoUtils.TFile.Encrypt()IoUtils.TFile.Decrypt.

如果你真的想阻止其他人阅读密码的明文版本,那么你将不得不使用密钥进行一些加密.那么你存储那个密钥在哪里?这将首先打败存储密码的全部目的.例如,通过使用文件系统的用户权限来防止其他用户访问会更好,因为您或您的软件可以执行任何操作,如果他具有相同的权限,则"黑客"可以执行此操作.

  • Robrok,如果你不理解答案,那么请不要接受它作为*正确的答案.当你这样做时,有兴趣回答问题的人不再关注,有兴趣学习答案的人就会像你一样感到困惑.如果您有更多问题,请询问. (3认同)