使用crypt()和PHP创建并验证sha-512密码哈希
PHP函数使用crypt()和PHP创建并验证sha-512密码哈希,php,hash,Php,Hash,PHP函数crypt()为密码创建哈希。随机盐需要第二个参数。此salt还可以包括有关使用哪种算法的附加说明。看起来像是黑客,但那是API。因此,我添加了$6$前缀以获得我需要的SHA-512哈希。(不能将bcrypt用于外部非PHP应用程序,该应用程序还应能够验证哈希。必须从PHP和其他算法支持有限的应用程序验证哈希。) 现在有两个PHP手册留给我的问题: 1) 我在哪里可以买到随机盐?它需要满足什么要求?我读过关于openssl\u random\u pseudo\u bytes,我想我应该
crypt()
为密码创建哈希。随机盐需要第二个参数。此salt还可以包括有关使用哪种算法的附加说明。看起来像是黑客,但那是API。因此,我添加了$6$
前缀以获得我需要的SHA-512哈希。(不能将bcrypt用于外部非PHP应用程序,该应用程序还应能够验证哈希。必须从PHP和其他算法支持有限的应用程序验证哈希。)
现在有两个PHP手册留给我的问题:
1) 我在哪里可以买到随机盐?它需要满足什么要求?我读过关于openssl\u random\u pseudo\u bytes
,我想我应该对它进行base64编码。但我需要多少源字节或编码字符
2) 如何在PHP中再次验证这样的哈希?似乎没有一个函数可以做到这一点。我相信我可以像以前一样再次调用crypt
,但要做到这一点,我需要从存储的密码散列中提取散列和算法以及其他所需的内容。我见过使用可变数量的$字符的散列,所以这似乎不是一个好的分隔符
我读过phpass,但它不支持sha-512,所以我不能使用它
PHP版本是5.5.9,因此有些函数可能不可用。为什么不使用PHP的内置功能来完成所有工作?并进行核实。这就是它编写的目的。我很乐意,但它只支持bcrypt,不支持sha512crypt或其他任何东西。建议使用password_hash()来保护密码,那么为什么您认为它不如使用SHA512安全呢?我不是说安全,我是说支持。应该验证生成的哈希的三个应用程序中至少有两个不支持bcrypt,所以它对我来说真的没用。无论多么安全。PHP之外还有一个世界。那么也许你应该在你的问题中指出你需要一些与外部(非PHP)应用程序兼容的东西。。。您问题中的所有内容都表明您需要一个用于哈希和验证的PHP解决方案