本文共 1555 字,大约阅读时间需要 5 分钟。
这里的原因是因为数据库中存储密码,如果直接存储md5安全性还并不是高。
一般会在表中增加salt,也就是加点盐,和真实密码进行某种聚合。也就是:
数据库中的密码=随机密码+用户输入的密码,进行某种算法聚合的
如下数据库中的表:
这个login_salt就是和真实密码聚合然后把杂交后的密码放到login_pwd中。
生成login_salt相关代码如下:
和真实密码混合生成的最后存储到数据库的字符串:
相关代码如下:
import random, string, hashlib, base64class UserService: @staticmethod def genePwd(pwd, salt): m = hashlib.md5() #获得md5算法对象 str = "%s-%s" % (base64.encodebytes(pwd.encode("utf-8")), salt) m.update(str.encode("utf-8")) return m.hexdigest() @staticmethod def geneSalt(length = 16): keyList = [random.choice(string.ascii_letters + string.digits) for i in range(length)] return "".join(keyList)
controller端相关代码:
@member_page.route("/reg", methods = ["GET", "POST"])def reg(): if request.method == "GET": return render_template("member/reg.html") req = request.values nickname = req['nickname'] if "nickname" in req else "" login_name = req['login_name'] if "login_name" in req else "" login_pwd = req['login_pwd'] if "login_pwd" in req else "" login_pwd2 = req['login_pwd2'] if "login_pwd2" in req else "" ...... ...... ...... model_user = User() model_user.login_name = login_name model_user.nickname = nickname if nickname is not None else login_name model_user.login_salt = UserService.geneSalt(8) model_user.login_pwd = UserService.genePwd(login_pwd,model_user.login_salt) model_user.created_time = model_user.updated_time = getCurrentTime() db.session.add(model_user) db.session.commit() return ops_renderJSON(msg = "注册成功")
转载地址:http://ddmif.baihongyu.com/