Nov*_*ing 1 php security hash md5 salt
我知道MD5的安全性最近有问题,这就是很多人使用盐的原因(我根本不明白这一点)但是我想知道你是否想在php中轻松实现安全系统你能不能两次md5 ?
像test
> 098f6bcd4621d373cade4e832627b4f6
>fb469d7ef430b0baf0cab6c436e70375
所以基本上:
$val = 'test';
$val = md5($val);
$val = md5($val);
Run Code Online (Sandbox Code Playgroud)
这会解决整个彩虹安全问题吗?有没有一个简单/ noob证明的方式在PHP中制作安全的数据库密码?
哈希两次几乎没有任何意义,也没有取得多大成就.但是,一般情况下,多次散列可能会有所帮助.例如,如果您散列足够的时间来获取100毫秒(或左右,取决于硬件),它可以帮助一点.它的基本思想非常简单:在正常登录中添加100毫秒是一个几乎没有明显的延迟 - 但是如果你正在尝试为字典攻击构建类似于表的东西,那么将时间乘以千元(或者无论它究竟起作用了什么,都开始产生真正的变化 - 一个你通常可以在(比如说)一天计算的表,需要几年时间.这是足够的差异,除了真正严重的攻击者之外,任何事情都会在他们完成工作之前很久就会放弃(或者只是觉得无聊).
盐是一种完全独立的工具.使用它并不能弥补底层哈希函数的弱点.这里的想法是字典攻击的表的大小变得非常大(例如,对于一个字节的盐,大256倍).该盐不正常保密的,但它是相对随机的,因此攻击者是谁做了字典攻击不能只是哈希每个单词,是的,但必须考虑每一个可能的盐值考虑在内.冒着重复的风险:它处理了(大多数)人们如何选择密码的弱点,而不是哈希函数本身的任何弱点.