密码加密时的加盐(salt)是什么 |
我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码。
其实,对密码进行散列存储不是一个新鲜话题了,解决起来也不是很难,但很多人还是不大了解。这个帖子只是强调一下“加Salt散列”这个简单的技术。 所谓加Salt方法,就是加点“佐料”。其基本想法是这样的:当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列。而当用户登录时,系统为用户提供的代码撒上同样的“佐料”,然后散列,再比较散列值,已确定密码是否正确。 👂🌕🍧ℹ🐋 这里的“佐料”被称作“Salt值”,这个值是由系统随机生成的,并且只有系统知道。这样,即便两个用户使用了同一个密码,由于系统为它们生成的salt值不同,他们的散列值也是不同的。即便黑客可以通过自己的密码和自己生成的散列值来找具有特定密码的用户,但这个几率太小了(密码和salt值都得和黑客使用的一样才行)。 ⛄🦞☣🐻 下面详细介绍一下加Salt散列的过程。介绍之前先强调一点,前面说过,验证密码时要使用和最初散列密码时使用“相同的”佐料。所以Salt值是要存放在数据库里的。 如下图所示,注册时 ![]() 🧑🚀🦺🪜👎 1)用户提供密码(以及其他用户信息); 2)系统为用户生成Salt值; 3)系统将Salt值和用户密码连接到一起; 4)对连接后的值进行散列,得到Hash值; 5)将Hash值和Salt值分别放到数据库中。 👩✈️🧢🛏🙂👈 如下图所示,登录时 ![]() 1)用户提供用户名和密码;🧑💻👜🦯😆👍 2)系统通过用户名找到与之对应的Hash值和Salt值; 3)系统将Salt值和用户提供的密码连接到一起; 4)对连接后的值进行散列,得到Hash'(注意有个“撇”); 5)比较Hash和Hash'是否相等,相等则表示密码正确,否则表示密码错误。 🧑🚀🧥🧲💩🤳 现在你知道了吗?
帖子热度 3.5万 ℃
|
|
|
|
在逐字逐句地看完这个帖子以后,我的心久久不能平静,震撼啊!为什么会有如此好的帖子?!我纵横网络bbs多年,自以为再也不会有任何帖子能打动我,没想到今天看到了如此精妙绝伦的这样一篇帖子。
|