page contents

Python密码存储黑科技!3行代码让用户密码坚不可摧

刚入门的你是不是还在用123456当密码?别让用户的隐私裸奔!今天用最通俗的方式,教你用Python给密码穿上"防弹衣",新手也能10分钟上手!

attachments-2025-05-P12poLqQ6837b6133a9a5.jpg刚入门的你是不是还在用123456当密码?别让用户的隐私裸奔!今天用最通俗的方式,教你用Python给密码穿上"防弹衣",新手也能10分钟上手!

一、密码为什么要穿"防弹衣"?

1、危险操作:直接存明文密码

# 错误示范!千万别这样存密码!

user_password = "123456"  # 直接存明文,黑客笑开花

数据库一旦被黑,所有用户隐私直接暴露!

2、普通哈希也不安全

# 看似安全,实则隐患

import hashlib

hashed = hashlib.md5("mypassword".encode()).hexdigest()

黑客用"彩虹表"(密码字典)能瞬间破解简单密码

相同密码哈希值一样,一破全破!

二、给密码加把盐(Salt)

什么是盐?

就像炒菜加盐调味,我们给每个密码加随机字符串

示例:用户A密码123456 → 加盐x7!pK → 哈希值abc123

用户B密码123456 → 加盐q9@zY → 哈希值xyz789

效果:相同密码,不同哈希值!

盐值三原则

随机生成(不要用时间戳等伪随机)

足够长(至少16个字符)

每个用户独立(绝不重复使用)

三、Python实战:3行代码护体

第1步:安装安全库

pip install bcrypt  # 推荐新手使用

第2步:加密密码(示例)

import bcrypt

# 用户注册时调用

def save_password(password):

    salt = bcrypt.gensalt()  # ① 生成随机盐

    hashed = bcrypt.hashpw(password.encode(), salt)  # ② 加密

    print("加密结果:", hashed.decode())

save_password("mypassword123")

# 输出示例(每次加密结果不同):

# 加密结果: $2b$12$80iA6VIgYGP8NE6Kb/NxPeFU61ykACnzKvurVbmoO.zFrqwToPsyS

第3步:验证密码(用户登录时)

import bcrypt

def check_password(input_pwd, hashed_from_db):

    # 把用户输入的密码和数据库存的哈希值对比

    return bcrypt.checkpw(input_pwd.encode(), hashed_from_db)

# 模拟验证过程

# 假设从数据库读取

stored_hash = b'$2b$12$80iA6VIgYGP8NE6Kb/NxPeFU61ykACnzKvurVbmoO.zFrqwToPsyS'  

print(check_password("mypassword123", stored_hash))  # 返回True

print(check_password("wrongpass", stored_hash))      # 返回False

四、新手常见问题

Q1:代码中的b'...'是什么?

这是字节类型(bytes),密码操作必须用字节数据

password.encode()  # 字符串转字节

hashed.decode()    # 字节转字符串(方便存储)

Q2:盐值需要自己存吗?

不需要!bcrypt生成的哈希值自动包含盐值

Q3:选bcrypt还是Argon2?

新手先用bcrypt,简单够用

五、安全密码的4个准则

绝不存明文

强制复杂密码

定期更新算法

二次验证

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2025-05-29 09:19
  • 阅读 ( 41 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

2112 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2112 文章
  3. Pack 1275 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章