zoukankan      html  css  js  c++  java
  • 密码安全之动态盐

    首先,我们看看什么是盐:http://zh.wikipedia.org/zh/%E7%9B%90_%28%E5%AF%86%E7%A0%81%E5%AD%A6%29

    通常情况下,当字段经过散列处理(如MD5),会生成一段散列值,而散列后的值一般是无法通过特定算法得到原始字段的。但是某些情况,比如一个大型的彩虹表,通过在表中搜索该MD5值,很有可能在极短的时间内找到该散列值对应的真实字段内容。

    加盐后的散列值,可以极大的降低由于用户数据被盗而带来的密码泄漏风险,即使通过彩虹表寻找到了散列后的数值所对应的原始内容,但是由于经过了加盐,插入的字符串扰乱了真正的密码,使得获得真实密码的概率大大降低。

    但是很多人没意识到的是静态盐仍然不够安全。因为静态盐要面临两种攻击:

    1,基于特定的静态盐,可以生成特定的彩虹表.

    2,对静态盐处理过的散列密码,可以按出现频率进行排序,最常出现的散列密码,对应的明文密码必然还是那些111111、123456之类的。


    因此,对于重要的账号密码,我们需要采用动态盐来对密码进行混淆。一个常用做法就是把账号名进行MD5之后,作为动态盐。则上述两种攻击将失效。

    比如,用户名是wsq,对应的md5是4572381974328f9c作为动态盐,密码是123456,加上动态盐之后为4572381974328f9c123456,再MD5是d16e970d6e5b95b9。则最终的计算结果是无法猜测的(unguessable)


  • 相关阅读:
    python基础——返回函数
    python基础——sorted()函数
    python基础——filter函数
    python基础——map/reduce
    python基础——高阶函数
    python基础——迭代器
    python——生成器
    轻量级文本编辑器,Notepad最佳替代品:Notepad++
    python网络编程
    如何检测远程主机上的某个端口是否开启?
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330335.html
Copyright © 2011-2022 走看看