密码加密
密码加密是必不可少的一环,在实际的使用中,我们往往通过SHA1和MD5相结合的方法来进行密码的加密。需要注意的是,上述算法的加密过程都是不可逆的,即:只能加密,不能解密。
1、改写密码检验过程
/** * 验证密码是否正确 * @param string $password 密码 * @return bool */ public function checkPassword($password) { if ($this->getData('password') === $this::encryptPassword($password)) { return true; } else { return false; } }
2、设计加密算法
/** * 密码加密算法 * @param string $password 加密前密码 * @return string 加密后密码 * @author 孤独的飞行者*/ static public function encryptPassword($password) { // 实际的过程中,我还还可以借助其它字符串算法,来实现不同的加密。 return sha1(md5($password) . 'wzz'); }
3、利用测试代码,生成默认密码
有了加密算法后,我们发现直接在数据库中添加密码 123 ,已经满足不了我们的需求了,我们需要知道123被加密以后的样子。
namespace app\index\controller; ... class LoginController extends Controller { public function test() { echo Teacher::encryptPassword('123'); }
得到123
加密后的密码为
5f383784a8ce262fa222357d503768412ee75518
现在我们在数据库中将密码重置为
5f383784a8ce262fa222357d503768412ee75518