通过PHP和MySQL检索和解码值

通过PHP和MySQL检索和解码值,php,mysql,Php,Mysql,我无法解码存储在MariaDB中的值: INSERT INTO tbl (password) VALUES (AES_ENCRYPT(%s,UNHEX(SHA2(%s,0))),$pass,"abcde"); 使用PHP脚本。 我用来解码值的代码是: $enc = dibi::fetchSingle(' SELECT password FROM cred WHERE *conditions*'); $password = dibi::fetch

我无法解码存储在MariaDB中的值:

INSERT INTO tbl  
(password) 
VALUES (AES_ENCRYPT(%s,UNHEX(SHA2(%s,0))),$pass,"abcde");
使用PHP脚本。
我用来解码值的代码是:

$enc = dibi::fetchSingle('
       SELECT password
       FROM cred
       WHERE *conditions*');

$password = dibi::fetchSingle('
       SELECT AES_DECRYPT(%bin,UNHEX(SHA2(%s,0))),$enc,'abcde');
在$enc中成功检索到二进制值,但当我尝试var_转储$password变量时,得到的结果为空

请说明可能存在的问题,为什么值未正确解码?
这是在同一SELECT语句中动态应用AES_解码函数的一种方法吗?

加密密码哈希的方案不安全。只需使用PHP函数
password\u hash
password\u verify
,它既简单又安全

仅仅使用散列函数是不够的,仅仅添加一个salt对提高安全性几乎没有作用

当攻击者获得对数据库的访问权限并获得加密密钥时,加密密码失败

取而代之的是,在HMAC上随机添加盐,持续约100毫秒,并将盐与散列一起保存。使用诸如
PBKDF2
Rfc2898DeriveBytes
password\u hash
Bcrypt
等函数和类似函数。关键是让攻击者花费大量时间通过暴力手段查找密码