1. 程式人生 > >pythonweb密碼加密三種方式(逐級進階)

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) 採用這種方法,使得密碼不可以被訪問,只能被設定和更改