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默认密码加密方式,亲测有效;

若有错误敬请指出

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