Salting和hashing密码,Java和PHP兼容性

时间:2015-07-25 06:32:31

标签: java php hash salt pbkdf2

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

问题是密码需要在PHP中加密,我需要能够通过Java进行验证,而我无法找到有关安全的任何信息{ {1}} {(例如cryptos)并确保PBKDF2PHP之间的生成相同。

我已经看到了有关在Java上使用PBKDF2,在PHP上使用Hmac但未按照Java& #39; s" SHA-1"。我现在处理PBKDF2WithHmacSHA1PHP的单独散列处理。

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

如果可能的话,宁愿坚持使用MySQL(除非有人可以建议一个更适合交叉兼容性的等价物)。

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

2 个答案:

答案 0 :(得分:0)

所以,事实证明它并不像我想象的那么复杂。我发现this question表示PHP相当于Java的{​​{1}}是PBKDF2WithHmacSha1函数和hash_pbkdf2算法。从那里开始只需将sha1salthash转移到PHP。以下是它的结果:

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

2)pbkdf2:所有需要发生的事情都是字节码转换的一些变化,它运行得很好。

之后,我需要做的就是修改Java代码以适应我的服务器/客户端设置(包括辅助会话散列),并计算出更多Java和更多错误。 salt通过网络传输进行编码和解码,现在效果很好。

在另一个问题上可以得到更详细的答案。

答案 1 :(得分:0)

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