如何使用PHP';Android中的密码散列
我有一个存储在数据库中的密码,它是使用PHP的如何使用PHP';Android中的密码散列,android,bcrypt,php-password-hash,Android,Bcrypt,Php Password Hash,我有一个存储在数据库中的密码,它是使用PHP的password\uhashhash算法加密的 例如: password_hash("pass", PASSWORD_DEFAULT); 将生成哈希: $2y$10$3e6a/J0xDd1LONdnbkp5nud.WwS3.gV3aHBTYX6r4Bq2BxZTjDCZu 从PHP文档中: 密码\u默认值-使用bcrypt算法(从PHP 5.5.0开始默认)。请注意,这个常量的设计目的是随着新的、更强的算法添加到PHP中,随着时间的推移而改变。
password\uhash
hash算法加密的
例如:
password_hash("pass", PASSWORD_DEFAULT);
将生成哈希:
$2y$10$3e6a/J0xDd1LONdnbkp5nud.WwS3.gV3aHBTYX6r4Bq2BxZTjDCZu
从PHP文档中:
密码\u默认值-使用bcrypt算法(从PHP 5.5.0开始默认)。请注意,这个常量的设计目的是随着新的、更强的算法添加到PHP中,随着时间的推移而改变。因此,使用此标识符的结果长度可能会随时间而变化。因此,建议将结果存储在可扩展到60个字符以上的数据库列中(最好选择255个字符)
密码\u BCRYPT-使用CRYPT\u BLOWFISH算法创建散列。
这将使用“$2y$”生成与crypt()兼容的标准哈希
标识符。结果将始终是一个60个字符的字符串,或FALSE
一旦失败。支持的选项:
正如它所说的,它使用bcrypt算法,在我的android应用程序客户端中是否有一种方法可以生成上面所示的相同哈希
我已经尝试过在没有结果的情况下使用实现此功能。我不明白为什么您需要在移动应用程序中复制相同的哈希值,但我想,您可以尝试以下方法: 您可以使用另一种加密方式从您的移动应用程序发送密码,在php服务器中解密密码并使用密码验证 我认为你的服务器上有一个密码盐来增强密码的强度
希望这有帮助是的,你可以在Android端重新创建哈希,但这并不能解决你的加密问题。如果您以明文形式发送散列,攻击者只需重播散列即可访问您的系统,而无需知道密码 password_散列函数的输出在实际散列之前包括算法、成本选项和salt(2y告诉您算法,10是示例中的成本选项)。您需要通过提供这些参数将其输入到Android端的crypt函数中。通常,您只需提供整个输出作为crypt函数的输入,但这是您试图验证的令牌,因此您需要根据所使用的算法,仅提取salt所需的部分 最简单的方法是使用现有的摘要实现,如,并使用服务器和客户端支持的密码,如CRYPT_SHA256或CRYPT_SHA512
但重申一下,您应该正确使用加密 为什么要复制相同的密码散列?我需要能够检查密码是否正确,但目前正在“清除”发送密码,我想知道是否有办法重新创建存储在数据库中的散列,并检查这意味着我将发送散列而不是纯文本密码。或者我可以使用加密,但我找不到足够安全的东西。我可以使用什么加密算法?我用过谷歌,但找不到足够安全的东西。你用的是HTTPS连接吗?这将非常有帮助。你也可以试试,也可以看看@mattm-answer。我今天很忙,但我稍后会尝试在这里发布一些代码,好吗?这是一个计算A2项目,所以不,我没有使用https连接