关键词搜索

源码搜索 ×
×

SQL笔记-用户表中增加salt属性与真实密码聚合存储

发布2020-03-02浏览6185次

详情内容

这里的原因是因为数据库中存储密码,如果直接存储md5安全性还并不是高。

一般会在表中增加salt,也就是加点盐,和真实密码进行某种聚合。也就是:

数据库中的密码=随机密码+用户输入的密码,进行某种算法聚合的

如下数据库中的表:

这个login_salt就是和真实密码聚合然后把杂交后的密码放到login_pwd中。

生成login_salt相关代码如下:

和真实密码混合生成的最后存储到数据库的字符串:

相关代码如下:

  1. import random, string, hashlib, base64
  2. class UserService:
  3. @staticmethod
  4. def genePwd(pwd, salt):
  5. m = hashlib.md5() #获得md5算法对象
  6. str = "%s-%s" % (base64.encodebytes(pwd.encode("utf-8")), salt)
  7. m.update(str.encode("utf-8"))
  8. return m.hexdigest()
  9. @staticmethod
  10. def geneSalt(length = 16):
  11. keyList = [random.choice(string.ascii_letters + string.digits) for i in range(length)]
  12. return "".join(keyList)

controller端相关代码:

  1. @member_page.route("/reg", methods = ["GET", "POST"])
  2. def reg():
  3. if request.method == "GET":
  4. return render_template("member/reg.html")
  5. req = request.values
  6. nickname = req['nickname'] if "nickname" in req else ""
  7. login_name = req['login_name'] if "login_name" in req else ""
  8. login_pwd = req['login_pwd'] if "login_pwd" in req else ""
  9. login_pwd2 = req['login_pwd2'] if "login_pwd2" in req else ""
  10. ......
  11. ......
  12. ......
  13. model_user = User()
  14. model_user.login_name = login_name
  15. model_user.nickname = nickname if nickname is not None else login_name
  16. model_user.login_salt = UserService.geneSalt(8)
  17. model_user.login_pwd = UserService.genePwd(login_pwd,model_user.login_salt)
  18. model_user.created_time = model_user.updated_time = getCurrentTime()
  19. db.session.add(model_user)
  20. db.session.commit()
  21. return ops_renderJSON(msg = "注册成功")

 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载