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

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

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

    加盐后的散列值,能够极大的减少因为用户数据被盗而带来的password泄漏风险,即使通过彩虹表寻找到了散列后的数值所相应的原始内容,可是因为经过了加盐,插入的字符串扰乱了真正的password,使得获得真实password的概率大大减少。

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

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

    2,对静态盐处理过的散列password,能够按出现频率进行排序,最常出现的散列password,相应的明文password必定还是那些111111、123456之类的。


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

    比方,username是wsq,相应的md5是4572381974328f9c作为动态盐,password是123456,加上动态盐之后为4572381974328f9c123456,再MD5是d16e970d6e5b95b9。则终于的计算结果是无法推測的(unguessable)


  • 相关阅读:
    django 单表操作
    爬虫学习
    DRF源码分析
    DRF权限和频率限制
    DRF版本和认证源码分析
    request高级部分
    多任务异步爬虫及selenium模块使用
    requests基本使用
    爬虫介绍及环境
    Flask生命周期的源码流程
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/3819492.html
Copyright © 2011-2022 走看看