Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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
在MYSQL中复制PHPs哈希_hmac功能_Php_Mysql_Cryptography - Fatal编程技术网

在MYSQL中复制PHPs哈希_hmac功能

在MYSQL中复制PHPs哈希_hmac功能,php,mysql,cryptography,Php,Mysql,Cryptography,我正在用用户名、强随机salt和php中的salt/HASH密码创建一个更安全的用户密码表,如下所示: $salt = bin2hex(openssl_random_pseudo_bytes(64)); $pass = hash_hmac('sha512', $plainTextPass, $salt); $this->user->password = $pass; $this->user->salt = $salt; $this->user->save();

我正在用用户名、强随机salt和php中的salt/HASH密码创建一个更安全的用户密码表,如下所示:

$salt = bin2hex(openssl_random_pseudo_bytes(64));
$pass = hash_hmac('sha512', $plainTextPass, $salt);
$this->user->password = $pass;
$this->user->salt = $salt;
$this->user->save();
我试图在MySQL中复制这个功能,但运气不太好。从脚本部署DB服务器时,我需要创建一些用户。据我所知,hash_hmac方法只是获取salt,将密码附加到salt,然后用sha 512对其进行散列。这在MySQL中似乎很容易做到,但是:

INSERT INTO `users` (`email`, `username`, `password`, `salt`) 
VALUES('test@example.com', 'admin', SHA2('9d1ebf3559baf9ffca61df5cec0b9eb067ae7912d097ad45f3a3086c39bf11292d92a7dfad497557fac7fbf7c24209db8b7696664d54c7e6bc55f720121bd38dadmin', 512), '9d1ebf3559baf9ffca61df5cec0b9eb067ae7912d097ad45f3a3086c39bf11292d92a7dfad497557fac7fbf7c24209db8b7696664d54c7e6bc55f720121bd38d');
在本例中,salt只是我手动生成的硬编码salt,您可以看到我只是在密码字段的末尾添加了密码“admin”。此用户创建,但我无法使用管理员用户名和密码登录

我应该在MySQL中以不同的方式来执行此操作吗?

An不是通过连接来计算的,而是如下所示(有关更多详细信息,请参阅链接)

HMAC(K,m)=H((K⊕ (opad)∥ H((K)⊕ (ipad)∥ m) )


但是,顾名思义,它是一个消息身份验证代码,而不是密码哈希方案。设计用于密码哈希的算法将是更好的选择,或者是一个很好的选择。

你可以预先计算一些散列并使用它们吗?我更倾向于将处理和数据存储分开,使用
crypt
在PHP中创建散列,然后将它们保存到数据库中。是的,我可以解决这两个问题,但是,为了使许多虚拟机自动运转,并使更改密码变得更容易,我的生活也将更容易在MySQL中解决这个问题。