我有一个与phpBB论坛在同一台服务器上运行的游戏服务器。
我想让用户输入他们的phpBB用户名和密码来验证他们对游戏服务器的身份。
我知道如何使用他们的用户名执行此操作(只需获取用户名并将其与SQL数据库中的'用户名'字段进行比较。)
但是,我不确定如何加密输入的密码,以便我可以将其与' user_password'进行比较。领域。如果它需要md5,我更喜欢在SQL中使用md5()函数,但我可以在SQL之外完成。
答案 0 :(得分:1)
显然,phpBB使用phpass进行密码管理。这实际上非常好,因为这意味着您很有可能使用标准密码哈希算法,例如bcrypt。 Bcrypt被认为非常强大。
要确定密码是否与加密的哈希相匹配,您(逻辑上)检索编码的哈希字符串,从中获取成本参数和盐,然后查看(当您将bcrypt算法应用于提交的密码时,成本和盐)它产生与您检索的相同的实际哈希字节。它的计算成本很高(如果您从头开始实施哈希算法本身就很棘手,建议您不做这样做),但它是从逻辑上讲,这并不是外面世界的复杂。
将代码放在PHP中进行验证并通过本地Web服务调用进行验证可能是值得的,因为这样您就可以轻松利用现有代码(就像那样,您可以绝对匹配用户凭据处理的内容)。可能会使它成为一个页面,只在处理登录后返回“当前”用户名,并使此客户端不维护会话状态。 (这应该是微不足道的。)你可能需要考虑锁定页面从机器外的访问,并添加某种速率限制(例如,每10秒钟从这个特殊页面只有一个用户响应)这使得各种令人讨厌的技巧变得不切实际。