一、密码加密介绍
- 用户密码不能明文存放到数据库,需要加密处理后密文保存
- 如果密码明文存放数据库,一旦数据库被攻破,不仅拿走用户信息,用户密码也就直接暴露了
- 如果密码密文存放数据库,一旦数据库被攻破,虽然也拿走用户信息,不能直接知道用户密码,不需要花费一定时间去破解密码,才能登录上用户的帐号
- 以前用的较多的是MD5,不可逆的加密算法。MD5加密有个特点:密码加密之后密文就固定了,如果有人把常用密码的MD5加密密文都保存到数据库,就相当于密码是相对公开的了,所以MD5加密不是被破解了,是被变相的破解了。
- 现在一般不直接用MD5加密,采用MD5+ salt(盐),相当于MD5+随机字符串,提高破解难度,也不特别安全
- 现在一般用 sha1 sha256,相当于把MD5 和 盐都保存起来了,更难被破解
- 密码加密算法一般都写在 user模型里面
二、密码加密实现
- 这里采用flask提供的密码加密算法 werkzeug.security.generate_password_hash 和check_password_hash