「怎样安全存储用户密码」,一个简易实现

如何安全存储用户密码,在网上已经有很多论述了。对于详细过程,不再赘述了,不如在此直接抛出经验。

  1. 明文存储的,直接枪毙
  2. md5存储的,蹂躏后再枪毙(五千万 md5 加密的密码约等于四千万明文密码)
  3. 使用强哈希算法,md5,sha1这些都已经淘汰了
  4. 每个密码必须加盐
  5. 必须是随机盐,完全不可预测的那种

值得注意的是,千万不要自己发明轮子,另外在 Python 中,应当使用 bcrypt 这个第三方库。

下面的 Python 代码,展示了大概的思路

def encrypt(password, salt=None):
    """加密

    :param password: bytes类型,务必转换
    """

    if salt is None:
        salt = os.urandom(10)

    h = hmac.new(salt, password, hashlib.sha256)

    return salt + h.digest()

def verify(password, hashed):
    """验证

    :param password: bytes类型,务必转换
    """
    
    return encrypt(password, salt=hashed[:10]) == hashed
      
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容