【问题标题】:Salting and hashing passwords, Java and PHP compatibility加盐和散列密码、Java 和 PHP 兼容性
【发布时间】:2015-10-15 21:41:48
【问题描述】:

我正在尝试制作一款与网站内容相关的游戏,并且用户的帐户将在网站上共享客户端的多个版本。

问题是密码需要在PHP进行salt-hash,并且我需要能够通过Java进行验证,我在安全cryptos上找不到任何信息(比如@987654324 @) 并确保 PHP 和 Java 之间的生成相同。

我看到了一些关于在PHP 上使用PBKDF2 或Hmac 和SHA-1 的信息,但没有按照Java 的“PBKDF2WithHmacSHA1”名称中的建议将它们结合起来。我现在可以处理PHP 或Java 的单个散列。

如何设置能够在PHP 上生成盐和散列、将其存储在MySQL 并能够通过Java 的散列函数验证密码的方法?

如果可能的话,我更愿意坚持使用PBKDF2(除非有人可以建议一个对交叉兼容性更好的等效项)。

附:不确定这是否应该出现在此处或 Crypto SE 上。我想,既然我问的是特定语言,我会先在这里尝试。

【问题讨论】:

    标签: java php hash salt pbkdf2


    【解决方案1】:

    所以,事实证明它并没有我想象的那么复杂。我发现this question 说PHP 相当于Java 的PBKDF2WithHmacSha1 是hash_pbkdf2 函数与sha1 算法。从那里只需将salt 和hash 从PHP 转移到Java。结局是这样的:

    1) PHP:对于这个,我只是复制了那家伙的pbkdf2 函数,并像他一样生成了盐和哈希。

    2) Java: 只需要在字节码转换中做一点改变,就可以了。

    在那之后,我需要做的就是修改Java 代码以适应我的服务器/客户端设置(包括辅助会话哈希),并解决更多围绕salt 和hash 编码的错误并通过网络传输解码,现在完美运行。

    关于其他问题有一个稍微更详细的答案。

    【讨论】:

      【解决方案2】:

      尝试考虑使用预构建的用户和密码管理,例如 JBoss KeyCloak。它基于 OAuth2 和 OpenID Connect 等标准,密码重置、用户注册和社交登录等内容都是免费的。它包括用于 Java 和 JavaScript 的连接器。显然connectors for PHP 也可用。

      【讨论】:

        猜你喜欢
        • 2015-02-17
        • 2015-08-20
        • 2011-06-02
        • 2011-10-29
        • 2012-03-24
        • 2014-06-10
        • 2011-07-27
        • 1970-01-01
        相关资源
        最近更新 更多