The proper way of implementing user login system(mark learn)

存储一个密码:

  1. 使用CSPRNG生成一个长的随机盐。
  2. 将密码和盐拼接在一起,使用标准的加密hash函数比如SHA256进行hash
  3. 将盐和hash记录在用户数据库中

盐要使用密码学上可靠安全的伪随机数生成器(Cryptographically Secure Pseudo-Random Number Generator (CSPRNG))来产生。CSPRNG跟普通的伪随机数生成器比如C语言中的rand(),有很大不同。正如它的名字说明的那样,CSPRNG提供一个高标准的随机数,是完全无法预测的。

验证一个密码:

  1. 从数据库中取出用户的盐和hash
  2. 将用户输入的密码和盐按相同方式拼接在一起,使用相同的hash函数进行hash
  3. 比较计算出的hash跟存储的hash是否相同。如果相同则密码正确。反之则密码错误。

Mark & TODO: https://core.telegram.org/api/end-to-end

猜你喜欢

转载自blog.csdn.net/gw569453350game/article/details/78272112
今日推荐