呼叫笨加密密钥
问题描述:
我在的config.php文件设置的密钥呼叫笨加密密钥
$config['encryption_key'] = '[email protected][email protected]!`[email protected]%^&';
我想注册用户到网站时使用的密码,此键,现在我用这个方法
'password' => hash('sha256', $password . '[email protected][email protected]!`[email protected]%^&')
有什么办法,我可以将上面的代码一样
'password' => hash('sha256', $password . $config['encryption_key']),
当我这样做给未定义的$配置变量的错误。
答
我强烈建议您使用内置的PHP API密码盐/哈希值,而不是你所使用的加密密钥是指用于加密类的方法...
$passwordHash = password_hash($password, PASSWORD_BCRYPT);
你使用存储在数据库中的这个盐渍和散列密码。
password_verify($password, $result->password)
这让你在一个if语句中使用它返回一个布尔值:
使用从DB得到,当它然后验证
if (password_verify($password, $result->password)) {
// do login stuff
} else {
// handle login failure
}
否则,您可以使用加密密钥通过以下(强烈建议反对它):
$this->config->item('encryption_key');
如果这不起作用,你可能写一个助手或其他东西,所以你需要调用CI实例来访问配置数组。
你不应该使用简单的散列函数来保护你的用户密码。你需要使用像PBKDF2,bcrypt,scrypt和Argon2这样强大的散列方案。一定要使用高成本因子/迭代次数。选择成本是很常见的,因此一次迭代至少需要100ms。查看更多:[如何安全哈希密码?](http://security.stackexchange.com/q/211/45523) –
只使用哈希函数是不够的,只是添加盐没有提高安全性,加密哈希速度非常快。相反,用随机盐迭代HMAC约100ms持续时间,然后用散列表保存盐。使用诸如“PBKDF2”(又名'Rfc2898DeriveBytes'),'password_hash' /'password_verify','Bcrypt'和类似函数的函数。关键是要让攻击者花费大量时间通过强力查找密码。 **保护您的用户非常重要,请使用安全的密码方法。** – zaph