日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

13flask密码加密

發布時間:2023/12/13 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 13flask密码加密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,了解密碼加密方式

  密碼具有私有性較強的特性,預測密碼加密對個人隱私的保護有這非常大的作用。在用flask搭建網站時候若服務器有被攻破的風險,要是用戶表中密碼字段也被拿走,后果將不堪設想。

  在密碼保護中主要有密碼加密和密碼存儲兩種方式:

  1,密碼加密

  主要是在密碼本身加密過程中的處理策略。

明文轉碼加密:BASE64, 7BIT等。BASE64只是利用索引對應關系進行加密的方式,具有可逆性,在安全性上只比明文的安全性高一點點,這種方式并不能算做真正的加密。
對稱算法加密:DES, RSA等。DES是將后半部分與前半部分進行置換的策略。3DES是DES的三重加密,安全性比較高,位數也比較長,目前沒有3DES被破解的記錄。
簽名算法加密:如MD5, SHA1等。

 MD5(Message-Digest Algorithm 5),也叫信息-摘要算法,他的特點是加密算法比較固定,如果兩個密碼明文部分相同,則得到的哈希值是一樣的,有被破解的風險。

加鹽哈希加密:最大特點是的“撒鹽”操作,加密時“隨機”字符串(鹽值),再進行哈希加密。即使輸入的密碼相同,若鹽值不同,那么哈希值也不一樣。

  eg:我將用戶“zy”和“zy1”的密碼都設置為“111”,通過撒鹽哈希加密后得到:

 

  明文部分一樣,但是用撒鹽方式后得到不用的密碼,具有唯一性。現在網站開發中主要是運用這種加密方法。

  2密碼存儲的主要形式:

  主要是在密碼本身存儲過程中的處理策略。

明文存儲:沒有任何安全性,一旦數據庫被黑所有密碼直接明文顯示在黑客面前。
加密存儲:通過一定的變換形式,使得密碼原文不易被識別。

二,認識werkzeug

  暫時了解一下Web Server Gateway Interface(WSGI),Web應用的實質是客戶端想服務器發送HTTP請求,服務器根據請求返回HTTP響應,客戶端接受的響應會在客戶端顯示出來。在學習Web應用前,首先得搞懂HTTP的相關知識,以及TCP,UDP的使用,在Web開發中增加了底層開發,使得開發具有一定難度。

  這時,WSGI作為在Web應用及底層TCP之間的接口,直接對WSGI操作,再通過WSGI去操作底層TCP應用,免去了底層開發的麻煩。

  werkzeug是Python中WSGI規范的實用函數庫,因此,Web開發中werkzeug的重要性不言而喻,他具有如下功能:

HTTP頭解析與封裝

易于使用的request和response對象

基于瀏覽器的交互式JavaScript調試器

與 WSGI 1.0 規范100%兼容

支持Python 2.6,Python 2.7和Python3.3

支持Unicode

支持基本的會話管理及簽名Cookie

支持URI和IRI的Unicode使用工具

內置支持兼容各種瀏覽器和WSGI服務器的實用工具

集成URL請求路由系統

三,在flask中的密碼加密

  在flask中的加密方式是加鹽哈希加密,我們在flask項目的model中調用加鹽哈希即可將密碼加密。具體操作:

  1,在用戶表中定義好各類字段,其中包括密碼字段,初始化數據庫時將密碼加密。

  

 1 class User(db.Model):
 2     __tablename__ = "user"
 3     id = db.Column(db.Integer,primary_key=True,autoincrement=True)
 4     username = db.Column(db.String(50),nullable=False)
 5     password = db.Column(db.String(100),nullable=False)
 6 
 7     def __init__(self,*args,**kwargs):    
 8         username = kwargs.get('username')
 9         password = kwargs.get('password')
10 
11         self.username=username
12         self.password = generate_password_hash(password)
13  

  這樣在注冊過程中的密碼就進行了加密。

  2,登陸

  

1 user = User.query.filter(User.id== id).first()
2         if user and user.check_hash_password(password):
3             session["user_id"] = user.id
4             session.permanent = True
5             return redirect(url_for('index'))   

  3,具體代碼:

  

model.py 
from werkzeug.security import generate_password_hash,check_password_hash

class User(db.Model):
#定義表
__tablename__ = "user"
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
telephone = db.Column(db.String(11),nullable=False)
username = db.Column(db.String(50),nullable=False)
password = db.Column(db.String(100),nullable=False)
job = db.Column(db.String(100),nullable=False)
city=db.Column(db.String(100),nullable=False)
introduce = db.Column(db.String(100),nullable=False)

#獲取這些字段
def __init__(self,*args,**kwargs):
telephone = kwargs.get('telephone')
username = kwargs.get('username')
password = kwargs.get('password')
job = kwargs.get('job')
city = kwargs.get('city')
introduce = kwargs.get('introduce')
#加密操作
self.telephone=telephone
self.username=username
self.password = generate_password_hash(password)
self.job = job
self.city = city
self.introduce = introduce
#在登陸時候的驗證操作
def check_hash_password(self,raw_password): #這里的參數是hash過的參數以及原始傳入hash
password = check_password_hash(self.password,raw_password)
return password #得到驗證的密碼  

  在登陸中的操作:

app.py
user = User.query.filter(User.telephone == telephone).first() if user and user.check_hash_password(password): session["user_id"] = user.id session.permanent = Truereturn redirect(url_for('index'))

  以上為flask中加鹽哈希加密的具體操作。

總結

以上是生活随笔為你收集整理的13flask密码加密的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。