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

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

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

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

如下数据库中的表:

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

生成login_salt相关代码如下:

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

相关代码如下:

扫描二维码关注公众号,回复: 9571792 查看本文章
import random, string, hashlib, base64

class 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 = "注册成功")
发布了1286 篇原创文章 · 获赞 1975 · 访问量 180万+

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/104605661
今日推荐