Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用crypt()和PHP创建并验证sha-512密码哈希_Php_Hash - Fatal编程技术网

使用crypt()和PHP创建并验证sha-512密码哈希

使用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,我想我应该

PHP函数
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解决方案