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

360影视 日韩动漫 2025-05-22 08:35 2

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

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

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

# 错误示范!千万别这样存密码!user_password = "123456" # 直接存明文,黑客笑开花

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

2、普通哈希也不安全

# 看似安全,实则隐患import hashlibhashed = hashlib.md5("mypassword".encode).hexdigest黑客用"彩虹表"(密码字典)能瞬间破解简单密码相同密码哈希值一样,一破全破!

什么是盐?

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

示例

用户A密码123456 → 加盐x7!pK → 哈希值abc123用户B密码123456 → 加盐q9@zY → 哈希值xyz789

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

第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 bcryptdef 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)) # 返回Trueprint(check_password("wrongpass", stored_hash)) # 返回False四、新手常见问题

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

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

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

Q2:盐值需要自己存吗?

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

Q3:选bcrypt还是Argon2?

密码安全就像给家门上锁,别让黑客有可乘之机!转发本文到学习群,和小伙伴一起守护代码安全吧!欢迎在评论区留言,我会解答所有新手疑问!

来源:信息科技云课堂

相关推荐