- 作者:老汪软件技巧
- 发表时间:2024-11-22 07:03
- 浏览量:
译者:菜小鸟魔王
怎样在数据库中存储密码?Hashing
黑客如果发现密码是以明文形式存储的,就能轻而易举地获取这些密码。
因此,我们需要通过哈希函数来对密码进行转换。
使用哈希函数转换密码
哈希函数的作用在于,它能够将密码转换成一个独一无二的字符串 —— 我们称之为“指纹”。重要的是,这种转换是不可逆的,也就是说,你无法从“指纹”反推出原始的密码。
在众多哈希函数中,bcrypt尤为受欢迎,原因有三:(1)它的运算速度较慢。(2)它需要消耗大量的计算资源。(3)它对内存的需求也很高。这些特性使得黑客想要尝试多次破解密码变得相当困难。
通过类比理解哈希
可以将哈希函数比作颜料混合的过程 —— 一旦两种颜色混合,就很难再分离出原始的颜色。
对密码应用哈希函数的处理流程
对密码应用哈希函数的处理流程如下:
系统会将新生成的指纹与数据库中存储的指纹进行对比,只有两者匹配时,用户才能获得系统访问权限。
最精彩的部分就要来了,准备好阅读了吗?
Salting
黑客可能会利用彩虹表从指纹中破解出密码。
因此,我们在密码中加入了“盐”(salt)。
彩虹表
可以将彩虹表视为一个预先计算好的指纹与密码之间的映射表。
而“盐”则是一个随机字符串。
向密码中加入“盐”以创建独特的指纹
每位用户都会获得一个唯一的“盐”,从而生成不同的指纹。简单来说,即使两个用户有相同的密码,他们的指纹也会不同。
加入盐之后,因为指纹变得独一无二,彩虹表就失效了。这会使得彩虹表中预先计算好的值失效。
对密码加盐的处理流程
对密码加盐的处理流程如下:
密码的验证流程
密码的验证流程如下:
准备好学习下一个技巧了吗?
Stretching
黑客可能会采取穷举法攻击来破解密码。
可以把穷举法想象成是在尝试密码锁上所有可能的数字组合。
因此,他们采用了 Stretching 技术。
Stretching原理
可以将 Stretching 技术理解为多次使用同一个哈希函数。这样做使得穷举法攻击的速度减慢,难度增加。
随机生成的密码通常更为安全。(密码长度建议超过12个字符。)
这会拖慢黑客的攻击速度,增加破解密码的难度。