通过PHP和MySQL检索和解码值
我无法解码存储在MariaDB中的值:通过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
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
等函数和类似函数。关键是让攻击者花费大量时间通过暴力手段查找密码