【问题标题】:Using BCrypt JAVA (on Smartfox server) accessing PHP passwords issue使用 BCrypt JAVA(在 Smartfox 服务器上)访问 PHP 密码问题
【发布时间】:2014-11-21 23:51:51
【问题描述】:

所以我有一个运行 php 的 wesbite,它使用一行加密所有密码,例如

password_hash($_POST['password'], PASSWORD_BCRYPT, $options)

并按如下方式验证密码

$passwordCheck = password_verify($password, $row['password']);

选项变量是:

$options = ['cost' => 00];

我已经排除了带有 00 的数字,但当然还有其他事情不确定是否与我不给出该数字有关。

问题来了, 我正在运行一个在 java 中运行的 SmartFox 服务器。我正在使用登录助手(也许我可能不需要,请继续阅读)并尝试将我发送给它的密码作为纯文本密码进行比较,当然 MySql 密码使用的是 BCrypt。现在在它引用的文档中,我可以将注册设置为使用 Md5,所以我认为我必须能够支持这种类型的密码检查。

使用 md5 http://docs2x.smartfoxserver.com/api-docs/asdoc/com/smartfoxserver/v2/util/PasswordUtil.html

登录助手文档 http://docs2x.smartfoxserver.com/DevelopmentBasics/login-assistant

我相信我可以尝试以下方法,但请不要犹豫,告诉我从另一个角度解决这个问题,或者其中一个不起作用(因为我不了解散列/加密/盐/彩虹表等) :

我可以在我发送密码的 c# 应用程序中转换密码,并让服务器根据数据库进行检查

如果预处理器告诉我它匹配,我可以使用预处理器来转换密码并检查它并将密码设置为数据库中的密码

如果 BCrypt 在 java 上不可用,则让 java 执行 php 脚本

【问题讨论】:

    标签: java passwords bcrypt


    【解决方案1】:

    如果我没记错的话,我认为你是在散列,而不是加密密码。由于 PHP 中的 BCrypt 可以同时用于这两种操作,因此名称很重要。

    避免使用 MD5,它现在被认为已损坏 - 您有在线搜索 http://www.hashkiller.co.uk/ 和分布式暴力破解工具,可能需要数小时或更短的时间才能破解新的 MD5 哈希。

    问题仍然不完全清楚,但让我试试:您控制 $row['password'] 的存储方式,但是您在 php 中使用 BCrypt“标准”,并且似乎没有等效的在爪哇。所以你不能从java程序中读/写 $row['password'] ,至少在某种程度上它是有效的。对吗?

    如果是这种情况,之前的问题How do you use bcrypt for hashing passwords in PHP? 会向您解释什么是 BCrypt,您可以找到一个在 Java 中实现相同算法的库。但我不会建议这种方法,而我会使用最佳答案中同一页面中列出的便携式 PHP 哈希函数之一(这应该是列表中的第一种方法?)

    预处理器的第二种方法尚不清楚,但一般提示:简单更好,安全性更好。如果听起来有点“奇怪”或“麻烦”,请避免使用它,将其替换为易于解释、“看起来不错”并且可以轻松映射到众所周知/记录在案的解决方案。

    【讨论】:

      【解决方案2】:

      在 Java here 中有一个 BCrypt 的实现。我在我的几个应用程序中使用它。我什至实现了一个 GUI 来生成哈希和测试匹配的明文。 BCryptGenerator

      【讨论】:

        猜你喜欢
        • 2019-07-20
        • 2011-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-02
        相关资源
        最近更新 更多