pythonweb密码加密三种方式(逐级进阶)

方法一:将密码各种转换
 md5 = hashlib.md5() 哈希加密
 md5.update(u_password.encode("utf-8"))  utf8转换
 u_password = md5.hexdigest()  转成十六进制

但是这种方式导致数据库相同密码的编码方式是一样的

方法二: 在密码中加入时间和随机数
    def set_password(self, password):
        # self.u_password = hashlib.new("md5", password.encode("utf-8")).hexdigest()
        self.u_password = generate_password_hash(password)

    def verify_password(self, password):
        # return self.u_password == hashlib.new("md5", password.encode("utf-8")).hexdigest()
        return check_password_hash(self.u_password, password)
        密码虽然相同,但是经过加密后相同密码会显示不同的编码
方法三: 使用property,使密码变为私有属性,并使方法变为属性
    _u_password = db.Column(db.String(256))

    @property
    def u_password(self):
        # return self._u_password
        raise Exception("不可动")

    @u_password.setter
    def u_password(self, password):
        self._u_password = generate_password_hash(password)

    def verify_password(self, password):
        return check_password_hash(self._u_password, password)
    采用这种方法,使得密码不可以被访问,只能被设置和更改

你可能感兴趣的:(flask)