YO~~ 剛跨入AI人工智慧領域的小小工程師, 熱愛自學, 熱愛分享, 下班後的我想為自己Coding, 積極撰寫教學文, 想將自學的程式知識分享給大家, 不斷追求進步的自己, 希望有一天能回饋社會,幫助需要幫助的人, 如果您有什麼很酷的想法,也覺得我還行,歡迎您找我合作~~ IG: https://www.instagram.com/coding_4_me/
Coding 起來 — Python Packages — 加鹽雜湊加密應用範例
Yo 今天來記錄一下,我在網路上學習到的加密package,非常有趣,所以在這邊也想分享給大家,相信很多人都有寫過或想寫的就是會員登入系統,那這個最重要的當然就是密碼的驗證機制,為了不讓任何人能夠輕易破解我們的密碼,我們通常會要將會員輸入的密碼用加密的方式儲存,簡單來說就是把你的密碼(明文 : 就是可以輕易看得懂並記下的密碼),加了一點料用更複雜的方式儲存(加密儲存)
我們範例使用的是加鹽雜湊加密
1.密碼生成函式 :我們來看看這個function 有什麼參數可以設定
werkzeug.security.generate_password_hash(password,method=’pbkdf2:sha1', salt_length = 10)
a.這個function(generate_passord_hash())是加鹽雜湊加密的方式,它產生出來的hash值可以使用check_password_hash()來驗證
i. generate_passord_hash(): 加密用
ii. check_password_hash(): 驗證用
b. method$salt$hash : 它產出來的hash值格式就是長這樣
c. 介紹一下有哪些參數可以使用:
i. password: 明文密碼
ii. method: hash 的方法(hashlib支援的狀況) ,格式基本上寫成: pbpdf2:<method>[:iterations]
iii. iterations: 在method裡面,代表跌代的次數, default值是1000
iv. salt_length: 就是前面提到加點料(salt: 鹽值)的字串長度,這邊的default值是8</method>
接下來我們的小小實作
## 加密與驗證實作 ## 首先導入我們需要的Packages from werkzeug.security import generate_password_hash, check_password_hash ## 建立一個帳號機制 class Account: ## 帳號設置 def __init__(self, name): self.name = name ## 密碼設置,但記得不能讓別人能夠閱讀 @property def password(password): assert False, "You can not read password" ## 給予密碼 @password.setter def password(self, password): ## 產生一組加鹽雜湊加密的產出值 self.password_hash = generate_password_hash(password, method='pbkdf2:sha1', salt_length = 10) ## 驗證機制 def verify_password(self, password): return ('Login Succuess' if check_password_hash(self.password_hash, password) == True else 'Sorry Login failed' )
應用場景: 今天有隻小烏龜要創立一個帳號與設定一組密碼,設置好後牠想確定到底安不安全,先試試設置好後可以輕易讀取嗎,再來也用假的密碼跟真的密碼試一下
## 先創個帳號little_turtle = Account(‘little_turtle’)## 確定一下帳號名稱print(little_turtle.name) #ittle_turtle ## 設置密碼little_turtle.password = ‘Big1234’ ## 查看密碼: 注意我們不能讓別人查看密碼# print(little_turtle.password) #AssertionError: You can not read password ## 驗證密碼 print(little_turtle.verify_password(‘Small1256’)) # Sorry Login failed 登入失敗啦print(little_turtle.verify_password(‘Big1234’)) # Login Succuess 登入成功
Reference:
喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。
发布评论…