pythonweb密碼加密三種方式(逐級進階)
阿新 • • 發佈:2019-01-02
方法一:將密碼各種轉換
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)
採用這種方法,使得密碼不可以被訪問,只能被設定和更改