加盐和散列密码,Java 和 PHP 兼容性

Salting and hashing passwords, Java and PHP compatibility

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

问题是密码需要在PHP中进行salt-hashed,我需要能够通过Java进行验证,我找不到任何关于安全cryptos(如 PBKDF2)并确保 PHPJava.

之间的生成相同

我看到了一些关于在 PHP 上使用 PBKDF2HmacSHA-1 的信息,但没有按照 Java的“PBKDF2WithHmacSHA1”。我现在掌握了 PHPJava 的单个散列。

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

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

P.S。不确定这是否应该出现在这里或 Crypto SE 上。我想,既然我问的是特定语言,我会先在这里试试。

所以,事实证明它并不像我想象的那么复杂。我发现 this questionPHP 等同于 JavaPBKDF2WithHmacSha1 是具有 sha1 算法的 hash_pbkdf2 函数。从那里开始,只需将 salthashPHP 转移到 Java。结局是这样的:

1) PHP:对于这个,我只是复制了那个人的 pbkdf2 函数并像他那样生成了 salt 和 hash。

2) Java:所有需要发生的只是字节码转换中的一点变化,它工作得很好。

在那之后,我需要做的就是修改 Java 代码以适应我的 server/client 设置(包括辅助会话哈希),并解决更多 salthash通过网络传输编码解码,完美运行

另一个问题的答案稍微详细一些。

尝试考虑使用像 JBoss KeyCloak. It is based on standards like OAuth2 and OpenID Connect, and things like password reset, user registration and social login come for free. It includes connectors for Java and JavaScript. Apparently connectors for PHP 这样的预建用户和密码管理。