Django默認用戶登錄make_password函數原生代碼實現

from hashlib import pbkdf2_hmac
from random import choice
from base64 import b64encode


# 隨機數所使用的字符串
serct_str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

# 拼接長度12位的隨機字符串
salt = "".join(choice(serct_str) for i in range(12))

# 使用hmac加密方式進行加密, 循環次數爲15萬次
hash = pbkdf2_hmac(password="Aa123456.".encode("utf-8"),
                   salt=salt.encode("utf-8"),
                   iterations=150000, dklen=None, hash_name="sha256")

# 使用base64的ASCII編碼進行解密
hash = b64encode(hash).decode("ascii").strip()

# 最後一次sha256方式加密
password = "%s$%d$%s$%s" % ("pbkdf2_sha256", 150000, salt, hash)
print(password)

這是通過閱讀框架源碼得知的Django默認密碼加密方式,親測有效;

若有錯誤敬請指出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章