我认为使用PHP的password_hash ()函数哈希的密码可以转移到不同系统并仍可成功用于验证目的。
据我了解,bcrypt哈希包含所有必要的组件,当与纯文本密码组合时,给定的密码可以进行验证。由于这一点,哈希可以被带到任何具有兼容实现的系统中,并用于验证目的。
我很快就会尝试这个方法,但在此之前,我想知道我的理论是否正确。
这个理论正确吗?
我认为使用PHP的password_hash ()函数哈希的密码可以转移到不同系统并仍可成功用于验证目的。
据我了解,bcrypt哈希包含所有必要的组件,当与纯文本密码组合时,给定的密码可以进行验证。由于这一点,哈希可以被带到任何具有兼容实现的系统中,并用于验证目的。
我很快就会尝试这个方法,但在此之前,我想知道我的理论是否正确。
这个理论正确吗?
password_verify
的文档说明如下:password_hash()
返回算法、成本和盐作为返回哈希的一部分。因此,验证哈希所需的所有信息都包含在其中。这使得验证函数可以在不需要单独存储盐或算法信息的情况下验证哈希。password_hash
和crypt
的输出(大体上是相同的)也很容易看到这些信息。crypt()
的哈希值是可移植的;它们可以传输到任何系统,并且它们包含执行此验证所需的所有必要数据,因此可以成功验证给定的密码。varchar(60)
列中。否则建议使用 varchar(255)
。latin1
校对规则,但是 binary
也完全可以胜任 :) - Ja͢ck我不知道你想把哈希值保存在哪里,但如果你要保存到数据库中,使用数据库自己的加密/哈希函数是最好的选择。
例如(使用加密)
INSERT INTO table (pass_hash,....) VALUES ( MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512 (" $password ") )
SELECT * FROM table WHERE pass_hash = MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512 (" $password ")