在Python中加盐并哈希密码
问题内容:
该代码应该用盐来散列密码。盐和哈希密码将保存在数据库中。密码本身不是。
鉴于该操作的敏感性,我想确保所有内容都是洁净的。
import hashlib
import base64
import uuid
password = 'test_password'
salt = base64.urlsafe_b64encode(uuid.uuid4().bytes)
t_sha = hashlib.sha512()
t_sha.update(password+salt)
hashed_password = base64.urlsafe_b64encode(t_sha.digest())
问题答案:
编辑: 这个答案是错误的。SHA512的单次迭代 速度很快 ,这使其不适合用作密码哈希函数。请在此处使用其他答案之一。
我看起来不错。但是,我敢肯定您实际上并不需要base64。您可以这样做:
import hashlib, uuid
salt = uuid.uuid4().hex
hashed_password = hashlib.sha512(password + salt).hexdigest()
如果这不会造成麻烦,则可以通过将salt和哈希密码存储为原始字节而不是十六进制字符串,从而在数据库中获得稍微更有效的存储。要做到这一点,更换hex
用bytes
和hexdigest
用digest
。