Python对密码加密

用户密码存储方式:

1、直接明文保存,比如用户设置的密码是“123456”,直接将“123456”保存在数据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,都可能采取的是这种方式。

2.使用MD5、SHA1等单向HASH算法保护密码,使用这些算法后,无法通过计算还原出原始密码,而且实现比较简单,因此很多互联网公司都采用这种方式保存用户密码。

但是,在python3的标准库中,已经移除了md5模块,而关于hash加密算法都放在hashlib这个标准库中,hashlib提供了常见的摘要算法,如SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法等。
例如:

import hashlib
 
 
def make_password(password):
    # md5
    md5 = hashlib.md5()
    # 转码
    sign_utf8 = str(password).encode(encoding="utf-8")
    # 加密
    md5.update(sign_utf8)
    # 返回密文
    return md5.hexdigest()

在视图函数中,调用 check_password_hash, generate_password_hash 方法

首先还要安装werkzeug
pip install werkzeug
 
导入
from werkzeug.security import check_password_hash, generate_password_hash

密码生成函数:

generate_password_hash(password, method=‘pbkdf2:sha1’, salt_length=8)

参数说明:

password: 明文密码
method: 哈希的方式(需要是hashlib库支持的),格式为 pbpdf2:<method>[:iterations]。
参数说明:
method:哈希的方式,一般为SHA1,
iterations:(可选参数)迭代次数,默认为1000。
slat_length: 盐值的长度,默认为8。

密码验证函数:

check_password_hash(pwhash, password)

参数:

  • pwhash: generate_password_hash生成的哈希字符串
  • password: 需要验证的明文密码
# 密码生成示例:
from werkzeug.security import generate_password_hash
print generate_password_hash('123456')
 
 
>>>'pbkdf2:sha1:1000$X97hPa3g$252c0cca000c3674b8ef7a2b8ecd409695aac370'
 
 
# 密码验证示例:
from werkzeug.security import check_password_hash
pwhash = 'pbkdf2:sha1:1000$X97hPa3g$252c0cca000c3674b8ef7a2b8ecd409695aac370'
print check_password_hash(pwhash, '123456')
 
 
>>>True
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值