前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Python实现PBKDF2_SHA256加密密码

Python实现PBKDF2_SHA256加密密码

作者头像
超级小的大杯柠檬水
发布2024-12-06 08:35:11
发布2024-12-06 08:35:11
12900
代码可运行
举报
文章被收录于专栏:CYCY
运行总次数:0
代码可运行

加密保存格式:pbkdf2_sha256迭代次数哈希值 admin可能的结果:pbkdf2_sha25610000yzsusUJwrGfonw+ZzVxlnA==vgf/OgLf5C4wtQLtfNY9d68H+hxgv8eqZ0mwfxCqqeU=

代码语言:javascript
代码运行次数:0
复制
import  os
import  hashlib
import  base64
def password_encrypt(password, salt=None, iterations=10000):
    """
    密码加密:PBKDF2_SHA256加密
    加密格式:pbkdf2_sha256$迭代次数$盐$哈希值
    admin可能的结果:pbkdf2_sha256$10000$yzsusUJwrGfonw+ZzVxlnA==$vgf/OgLf5C4wtQLtfNY9d68H+hxgv8eqZ0mwfxCqqeU=
    """
    # 生成随机盐
    # 生成 16 字节的随机盐,并编码为 Base64 字符串
    salt = salt or base64.b64encode(os.urandom(16)).decode('utf-8')
    # 使用 PBKDF2-SHA256 算法生成哈希值
    hash_object = hashlib.pbkdf2_hmac('sha256', password.encode(), salt.encode(), iterations)
    # 将哈希值编码为 Base64 字符串
    hash_value_b64 = base64.b64encode(hash_object).decode('utf-8')
    # 构造加密字符串
    encrypted_string = f'pbkdf2_sha256${iterations}${salt}${hash_value_b64}'
    return encrypted_string

def password_verify(self, password, encrypted_string):
    """
    密码验证:PBKDF2_SHA256加密
    """
    iterations,salt, hash_value_b64 = encrypted_string.split('$')[-3:]
    return self.password_encrypt(password, salt,int(iterations)) == encrypted_string
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档