什么是盐(salt):
密码学中,在散列前将指定的字符串插入散列内容中的任意固定位置,插入字符串的操作称为「加盐」。
-
散列:对数据处理的方法,通过散列函数/算法将项和索引(散列/散列值)生成散列表(便于搜索的数据结构)。
-
散列算法、哈希函数:用于加密密码,因为其计算出的散列值(Hash Value)能不可逆(不可倒推原来的数值)。
为什么需要「加盐」:
为了额外的安全,即使被彩虹表找到散列后对应的原始内容,由于「加了盐」,扰乱了真正的密码,让获取到的难度增大了不少。
散列函数一些实践(md5,sha1, hash):
echo $md5 = md5('test'); // 098f6bcd4621d373cade4e832627b4f6
echo sha1('test'); // a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
echo hash('md5', 'test'); // 098f6bcd4621d373cade4e832627b4f6
echo hash('sha256', 'test'); // 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
echo hash('haval160,4', 'test'); // 516d3243a12ce3af38a005003c7221bf85299714
-
md5()、sha1()和sha256()并不适合用于密码保护场景:
这些散列算法是面向快速、高效进行散列处理而设计,破解者能「暴力」获取散列码对应的原始数据。
-
注意:密码散列只能保护密码不会从数据表中直接获取,无法保证被注入恶意代码拦截到密码。
写到最后:
安全是门大学问,这仅是是我学习过程中整理出来的一丢丢表面东西,希望能给屏幕前的你带来一点帮助,希望我们能共同进步 ? 如果可以的话,能不能给我点个赞呀~ ~就一下啊…)