為自己Coding
為自己Coding

YO~~ 剛跨入AI人工智慧領域的小小工程師, 熱愛自學, 熱愛分享, 下班後的我想為自己Coding, 積極撰寫教學文, 想將自學的程式知識分享給大家, 不斷追求進步的自己, 希望有一天能回饋社會,幫助需要幫助的人, 如果您有什麼很酷的想法,也覺得我還行,歡迎您找我合作~~ IG: https://www.instagram.com/coding_4_me/

Coding 起來 — Python Packages — 加鹽雜湊加密應用範例


Github連結

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:

https://www.itread01.com/article/1465295897.html

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论