2017-04-21 83 views
1

我试图在PHP中查找SHA2-512哈希函数,但没有看到一个。对于我目前正在进行的项目,我需要允许用户重置密码。当他们这样做时,我想使用SHA2-512在PHP脚本中散列密码,然后将它与相关的用户名存储在数据库中。我已经从HTML表单获取用户名和密码,所以这不是问题。我似乎无法弄清楚如何使用hash()openssl_digest()来使用SHA2-512(我使用PHP 5)对密码进行散列。另外,我是否将我的数据库中的十六进制散列存储为VARCHAR如何使用PHP创建和存储SHA2-512哈希值

+0

'哈希( “SHA512”,plain_password)'这将产生哈希密码 –

+0

您是否尝试过谷歌搜索 “的PHP SHA512”? [这是PHP文档](http://php.net/manual/en/function.hash.php) – Pharaoh

+0

@MASIDDIQUI我认为这是SHA1? – lillemap

回答

1

十六进制标识符使您的表和索引变大并减慢比较。我建议你不要使用它,但是如果你必须使用十六进制值作为标识符,你可以使它成为二进制。

你可以像这样散列;

$hashed_password = hash('sha512', $password); 
+0

我正在尝试编写一个查询,如:'$ set_login =“INSERT INTO用户(用户名,密码)VALUES('admin',“; \t $ hash = password_hash(”password“,PASSWORD_DEFAULT); \t $ set_login = $ set_login。$ hash。”)“'但它似乎不起作用 – lillemap

+0

试试这个; $ hash = hash(“sha512”,$ password); $ set_login =“插入用户(用户名,密码)VALUES('admin',”; $ var1 =“'”; $ var2 =“'”; $ var3 =“)”; $ querry = $ set_login。$ var1。$ hash。$ var2。$ var3; –

+0

我简化了我的代码:'$ u =“admin”; \t $ hash = password_hash(“password”,PASSWORD_DEFAULT); \t $ set_login =“INSERT INTO用户(用户名,密码)VALUES($ u,$ hash)”;'但它仍然不起作用 – lillemap