【发布时间】:2017-09-26 18:48:01
【问题描述】:
我目前正在寻找加密和存储用户密码的最佳做法。 目前,我在我的 JSON 配置中存储了一个由 16 个字符组成的“密钥”,并且我总是将这个密钥和密码连接起来以生成一个“安全”密码。
如何更好地处理这种情况?每个密码都有 1 个密钥是否足够安全,还是我应该放弃这种方法以支持良好的 ol' 数据库密码 + 盐存储?
class PasswordHandler
{
private $_secret_key;
private $_password;
public function __construct($password = 'myVeryStrongPasswordThanNoneCouldBreak') {
$this->_secret_key = 'i36P8JKnyuvaNDah';
$this->_password = $password;
return $this;
}
public function processPassword() {
return hash('sha256', $this->_secret_key . $this->_password);
}
}
echo (new PasswordHandler)->processPassword();
还有:
- 是否足够散列或者我应该加密密码? SHA-256 是否足够强大?
- 在处理密码时,哪种散列/加密算法是最佳选择?
亲切的问候!
【问题讨论】:
-
你检查过
password_hash / password_verify来自PHP DOC -
请不要自己滚动密码哈希方案。 PHP 提供password_hash() 和password_verify() 请使用它们。这里有一些good ideas about passwords。如果您使用的是 5.5 之前的 PHP 版本there is a compatibility pack available here。
-
所以,第一条安全规则是不要自己写! Bcrypt 可能是存储密码的最佳解决方案。看看这里stackoverflow.com/questions/4795385/…