`

salt

 
阅读更多
(一) 为什么要用哈希函数来加密密码

如果你需要保存密码(比如网站用户的密码),你要考虑如何保护这些密码数据,象下面那样直接将密码写入数据库中是极不安全的,因为任何可以打开数据库的人,都将可以直接看到这些密码。



解决的办法是将密码加密后再存储进数据库,比较常用的加密方法是使用哈希函数(Hash Function)。哈希函数的具体定义,大家可以在网上或者相关书籍中查阅到,简单地说,它的特性如下:

(1)原始密码经哈希函数计算后得到一个哈希值

(2)改变原始密码,哈希函数计算出的哈希值也会相应改变

(3) 同样的密码,哈希值也是相同的

(4) 哈希函数是单向、不可逆的。也就是说从哈希值,你无法推算出原始的密码是多少

有了哈希函数,我们就可以将密码的哈希值存储进数据库。用户登录网站的时候,我们可以检验用户输入密码的哈希值是否与数据库中的哈希值相同。



由于哈希函数是不可逆的,即使有人打开了数据库,也无法看到用户的密码是多少。

那么存储经过哈希函数加密后的密码是否就是安全的了呢?我们先来看一下几种常见的破解密码的方法。

(二) 几种常见的破解密码的方法

最简单、常见的破解方式当属字典破解(Dictionary Attack)和暴力破解(Brute Force Attack)方式。这两种方法说白了就是猜密码。



字典破解和暴力破解都是效率比较低的破解方式。如果你知道了数据库中密码的哈希值,你就可以采用一种更高效的破解方式,查表法(Lookup Tables)。还有一些方法,比如逆向查表法(Reverse Lookup Tables)、彩虹表(Rainbow Tables)等,都和查表法大同小异。现在我们来看一下查表法的原理。

查表法不像字典破解和暴力破解那样猜密码,它首先将一些比较常用的密码的哈希值算好,然后建立一张表,当然密码越多,这张表就越大。当你知道某个密码的哈希值时,你只需要在你建立好的表中查找该哈希值,如果找到了,你就知道对应的密码了。



(三) 为密码加盐(Salt)

从上面的查表法可以看出,即便是将原始密码加密后的哈希值存储在数据库中依然是不够安全的。那么有什么好的办法来解决这个问题呢?答案是加盐。

盐(Salt)是什么?就是一个随机生成的字符串。我们将盐与原始密码连接(concat)在一起(放在前面或后面都可以),然后将concat后的字符串加密。采用这种方式加密密码,查表法就不灵了(因为盐是随机生成的)。









总结:单单使用哈希函数来为密码加密是不够的,需要为密码加盐来提高安全性,盐的长度不能过短,并且盐的产生应该是随机的。
详细出处参考:http://www.jb51.net/article/32741.htm
分享到:
评论

相关推荐

    Adaucogit Salt (3D全自动标注) v2.1

    Adaucogit Salt 不仅提供2D全系列的自动标注尺寸(线性自动标注、坐标式自动标注、孔自动列表….),另外还有3D的全自动标注尺寸。 我们知道使用AutoCAD来标注三维尺寸,你必须随时改变UCS平面来标注适合的尺寸位置,...

    Salt.Essentials.1491900636

    Get a complete introduction to Salt, the widely used Python-based configuration management and remote execution tool. This practical guide not only shows system administrators how to manage complex ...

    Salt.Cookbook.1784399744

    Chapter 1: Salt Architecture and Components Chapter 2: Writing Advanced Salt Configurations Chapter 3: Modules, Orchestration, and Scaling Salt Chapter 4: General Administration Tasks Chapter 5: ...

    salt-2019.2.0.tar.gz

    SaltStack is the company that created and maintains the Salt Open project and develops and sells SaltStack Enterprise software, services and support. Easy enough to get running in minutes, scalable ...

    如何给MD5加上salt随机盐值

    不知道大家知不知道,在开发的时候如果直接给密码散列,黑客可以通过查散列值...但如果加上salt后就会难上很多,即便是你获得了其中的salt和最终密文,破解也是相当麻烦的。下面跟着小编通过这篇文章来一起学习学习吧。

    爆破带salt的md5

    指定字典目录或者字典路径,软件会自动爆破带salt值的md5,速度根据电脑配置而定 指定字典目录或者字典路径,软件会自动爆破带salt值的md5,速度根据电脑配置而定 指定字典目录或者字典路径,软件会自动爆破带salt值的...

    TUXEDO之SALT与WebSevice互通-学习

    TUXEDO之SALT与WebSevice互通-学习 .

    Oracle SALT安装文档

    Oracle SALT安装文档,针对10g以上

    salt文档(0.11)

    salt基于python开发的自动化运维工具。

    salt紧急发布操作手册-csnd发布版本.md

    salt操作手册,实操

    The Price of Salt

    The Price of Salt 欧美文章 全英文的

    salt api开发基础

    master minion api等安装和配置。salt-ssh源码梳理。salf-api调用。

    salt-django-example, Django 部署的salt状态树示例.zip

    salt-django-example, Django 部署的salt状态树示例 salt-django-example将 Django 应用程序部署到生产服务器的salt状态树。堆栈__Ubuntu: 包名称和堆栈的其他部分只与Ubuntu一起使用为wsgi容器提供反向代理,并为 ...

    Salt Cookbook [eBook].epub

    Salt Cookbook [eBook].epub

    Salt-2019.2.0.pdf

    salt官方文档,讲述如何部署实施salt,实现高效运维。 一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。

    Salt-2016.11.1.pdf

    Salt-2016.11.1.pdf

    salt-2015.5.0 pdf 官方教程!运维必备!

    salt-2015.5.0 pdf 官方教程!运维必备!

    linux-saltssh批量装saltminion

    salt-ssh是Saltstack的另一种管理方式,无需安装minion端,可以运用Salt的一切功能,管理和使用方式和基本和Salt一样。但是执行效率会比有minion端慢很多,不适合大规模批量操作

    ceph-salt, Ceph集群部署与 SaltStack.zip

    ceph-salt, Ceph集群部署与 SaltStack 基于的Ceph集群部署Ceph集群部署的Salt状态。支持:Ceph MONCeph OSDCeph MDSCeph客户端Ceph REST API详细信息:支持来自一个salt主 node的Ceph多环境部署。部

    JEDEC JESD22-A107C:2013(R2020) Salt Atmosphere(盐雾) - 完整英文电子版(5页)

    完整英文电子版JEDEC JESD22-A107C:2013(R2020) Salt Atmosphere(盐雾)。盐雾是一种破坏性的,加速的应力,它模拟了严酷的海岸气氛对所有裸露表面的影响。 这样的应力和应力后测试确定了固态器件的耐腐蚀性,并且...

Global site tag (gtag.js) - Google Analytics