我有一个游戏服务器运行在与phpBB论坛相同的服务器上。
我想让用户通过输入他们的phpBB用户名和密码来向游戏玩家验证他们的身份。
我知道如何使用他们的用户名(只需获取他们的用户名并将其与SQL数据库中的“username”字段进行比较)。
但是,我不知道如何加密输入的密码,以便将其与“user_password”字段进行比较。如果需要md5,我更愿意在SQL中使用md5()函数,但可以在SQL之外使用。
发布于 2014-04-21 11:41:57
显然,phpBB使用菲帕斯进行密码管理。这实际上很好,因为这意味着您很有可能使用一个标准的密码哈希算法,比如bcrypt。Bcrypt被认为非常强大。
要计算密码是否与bcrypted散列匹配,您(从逻辑上)检索编码的哈希字符串,从其中获取成本参数和盐分,然后查看(当您将bcrypt算法应用于提交的密码时,成本和salt)它是否会产生与检索的实际哈希字节相同的结果。这在计算上是昂贵的(如果您是从零开始实现的话,哈希算法本身是很棘手的,建议您不这样做),但从逻辑上讲,它并不是对外部世界那么复杂。
可能值得将代码放在PHP中进行验证,并通过本地web服务调用进行验证,因为那时您可以轻松地利用现有代码(就像这样,您肯定可以匹配用户凭据处理的内容)。可能会使其成为一个页面,在处理一个登录后只返回“当前”用户名,并使该页面的客户端不维护会话状态。(这应该是微不足道的。)您可能需要考虑从从机器上访问页面锁定页面,并添加某种速率限制(例如,每10秒只有一个用户响应这个特殊页面),因为这使得各种讨厌的技巧变得不切实际。
https://stackoverflow.com/questions/23196353
复制相似问题