1

我的应用程序当前正在使用 firebird 安全性为我的应用程序的任何用户登录。

我们使用的是 Delphi7 和 Firebird 2.1。

现在我们需要改变这一点,我们需要自己控制去访问。

我们正在考虑从数据库中检索所有用户密码(作为转换例程)并将密码保存在我们的表中......

有可能做到这一点吗?

我正在尝试使用 delphi 组件 TIBSecurityService,但没有成功。

看一看:

var
  i: integer;
  l: TStrings;
  pwd: string;
begin
  IBSecurityService1.Attach;
  IBSecurityService1.DisplayUsers;
  l := TStringList.Create;
  try
    for i := 0 to IBSecurityService1.UserInfoCount-1 do
      l.add(IBSecurityService1.UserInfo[i].UserName);

    while l.Count > 0 do
      try
        IBSecurityService1.DisplayUser(l[0]);
        pwd := IBSecurityService1.Password;
        // pwd = ''
      finally
        l.Delete(0);
      end;
  finally
    l.Free;
  end;
end;

感谢帮助!

4

3 回答 3

4

Firebird 中的密码经过哈希处理,因此您无法恢复它们。

于 2012-10-18T12:22:49.697 回答
4

据我所知,TIBSecurityService 适用于 Interbase 6(请参阅其在Embarcadero 的 wiki上的条目)。我不确定该组件是否仍然适用于 Firebird 2.1,因为最初的 Firebird 是该版本的一个分支。

说了这么多,就无法找回原来的密码了。Firebird 中的密码使用Firebird 常见问题解答中所述的单向加密算法进行加密。因此,如果那是您的意图,那么它将行不通。

您可以尝试升级保存用户信息的 security2.FDB 数据库。您可以通过在旧的 Firebird 服务器上备份该数据库并在新的 Firebird 服务器上恢复它来做到这一点。检查此链接以了解要遵循的步骤。

高温高压

于 2012-10-18T12:25:09.100 回答
2

在任何体面的应用程序中,密码都不会加密或以纯文本形式存储。

它们是通过计算密码的哈希值来存储的。尽管有几种弱散列算法,但 Hasing 应该是不可逆的,我怀疑如果没有严重的黑客攻击,恢复是可能的。

于 2012-10-18T12:20:55.113 回答