# 密码的存储

  • 严禁明文存储

  • 单向变换

    通过 摘要(哈希)算法 进行加密

  • 变换复杂度要高

    组合对密码进行加密

  • 密码复杂度要高

    限制密码长度,必须包含特殊字符等

  • 加盐

    在加密时,加入随机的字符串

通常使用 摘要(哈希)算法 来进行加密

什么是 摘要(哈希)算法

它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。 摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过。 摘要算法之所以能指出数据是否被篡改过,就是因为摘要函数是一个单向函数,计算f(data)很容易, 但通过digest反推data却非常困难。而且,对原始数据做一个bit的修改,都会导致计算出的摘要完全不同。

常见的哈希算法有: md5, sha1, sha256

# 简单的哈希算法会被彩虹表查到

这时就需要组合对密码进行加密

md5(sh256(sha1(密码)))

# 加盐

所谓的盐就是随机字符串

原始密码 加密后的密码
123456 abafbabfafbafbabab YHGKIOPLKJJYJKOL
md5(sh256(sha1(原始密码 ++ 特殊字符)))

# 密码的传输

  • 使用 https
  • 频率限制(密码错误时,最多允许输入5次)
  • 前端加密后发送

# 生物特征密码

  • 指纹
  • 声纹
  • 虹膜
  • 人脸识别

# 生物特征密码缺点

  • 容易泄露
  • 无法修改