检索firebird用户密码

时间:2012-10-18 11:53:34

标签: delphi firebird

我的应用程序当前正在使用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;

感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

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

说这个,你可以检索原始密码。 Firebird中的密码使用Firebird FAQ中所述的单向加密算法进行加密。所以,如果这是你的意图那么它将无法运作。

您可以尝试做的是升级包含用户信息的security2.FDB数据库。您可以通过在旧的Firebird服务器上备份该数据库来执行此操作,并在新的Firebird服务器上将其还原。检查this link以了解要遵循的步骤。

HTH

答案 2 :(得分:2)

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

通过计算密码的哈希来存储它们。 Hasing应该是不可逆的,因为有几个弱哈希算法,我怀疑在没有严重破解的情况下恢复是可能的。