(一) 为什么要用哈希函数来加密密码
如果你需要保存密码(比如网站用户的密码),你要考虑如何保护这些密码数据,象下面那样直接将密码写入数据库中是极不安全的,因为任何可以打开数据库的人,都将可以直接看到这些密码。
解决的办法是将密码加密后再存储进数据库,比较常用的加密方法是使用哈希函数(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
分享到:
相关推荐
### 盐(Salt)文档概览与关键技术知识点 #### 标题解读 - **"Salt-2016.11.1.pdf"**: 这个文档标题表明它是一份关于Salt软件版本2016.11.1的手册或指南。 #### 描述解析 - **"Salt-2016.11.1.pdf"**: 描述部分并未...
- 可以通过命令`salt '*' test.ping`或`salt '*' network.ip_addrs`来测试`salt-master`与所有已认证`minion`之间的连通性。 #### 六、高级配置与使用技巧 - **文件管理**:通过配置文件`/etc/salt/minion`中的`...
Adaucogit Salt 不仅提供2D全系列的自动标注尺寸(线性自动标注、坐标式自动标注、孔自动列表….),另外还有3D的全自动标注尺寸。 我们知道使用AutoCAD来标注三维尺寸,你必须随时改变UCS平面来标注适合的尺寸位置,...
### 盐(Salt)自动化运维工具详解:从入门到精通 #### 一、盐(Salt)简介 Salt是一款基于Python语言开发的自动化运维工具,它以其高效、灵活、可扩展的特点在运维领域受到广泛欢迎。Salt的核心优势在于其对简单性、...
### Oracle Service Architecture Leveraging Tuxedo (SALT) 安装指南 #### 一、概述 Oracle Service Architecture Leveraging Tuxedo(简称SALT)是一款由Oracle提供的中间件产品,旨在帮助用户在复杂的环境中...
根据给定的文件信息,以下是对标题“Salt-2019.2.0.pdf”以及描述中所蕴含知识点的详细解释: 首先,标题所提到的“Salt”是指一个名为SaltStack的开源基础设施管理工具。而版本号“2019.2.0”表明这是一份官方发布...
盐(Salt)是一种开源自动化工具,用于配置管理、远程执行任务和系统状态管理。它采用主从架构,其中"master"是中心控制器,"minion"是被管理的远程节点。"salt-2014.7.0.tar.gz"是SaltStack在2014年7月发布的版本的...
### Salt 手册知识点概述 #### 一、安装与配置 **1.1 快速安装** 快速安装章节为用户提供了一种最简单的安装方法,帮助用户迅速上手 Salt。此部分通常包括安装脚本或最小依赖项的安装指导,旨在减少用户在安装...
1. 配置层次:状态文件可以组织成树状结构,例如`/srv/salt/top.sls`定义了哪些状态文件应用于哪些Minion,而具体的配置细节则在子目录中的`.sls`文件中定义。 2. 依赖管理:状态文件可以声明依赖关系,确保状态的...
本文将深入探讨椒盐噪声(Salt & Pepper noise),这是一种典型的图像噪声类型,以及如何对图像进行加噪声操作。椒盐噪声通常表现为图像上随机分布的黑点(盐粒)和白点(椒粒),对图像质量造成显著影响。 椒盐...
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 ...
说明了如何以普通用户而非 root 用户的身份运行 Salt Master 和 Minion。 - **用户切换**:在运行时切换到指定用户。 - **权限调整**:调整运行所需的最小权限。 ##### 2.16 使用 cron 与 Salt 结合 讲解了如何...
不知道大家知不知道,在开发的时候如果直接给密码散列,黑客可以通过查散列值...但如果加上salt后就会难上很多,即便是你获得了其中的salt和最终密文,破解也是相当麻烦的。下面跟着小编通过这篇文章来一起学习学习吧。
盐(salt)是一个开源自动化工具,用于远程系统管理和配置管理,而`salt-sproxy`是其一个扩展,专为处理单个或特定的盐矿(minion)节点而设计。在这个`salt-sproxy-2019.6.0b2.tar.gz`压缩包中,包含的是`salt-sproxy`...
在给定的压缩包文件“salt-2018.3.0.tar.gz”中,我们找到了盐栈的源码,这使得我们可以深入了解其内部工作原理,并根据需要自定义或扩展功能。 盐栈的核心组件包括: 1. **Master**: 盐主(Master)是盐栈系统中...
指定字典目录或者字典路径,软件会自动爆破带salt值的md5,速度根据电脑配置而定 指定字典目录或者字典路径,软件会自动爆破带salt值的md5,速度根据电脑配置而定 指定字典目录或者字典路径,软件会自动爆破带salt值的...
盐(Salt)是一种开源自动化工具,主要用于基础设施管理,包括配置管理、远程执行和状态应用。在本案例中,我们关注的是Salt的SSH模块,它允许用户通过SSH协议远程管理目标系统,而无需安装完整的Salt Minion。这个...
本文将深入探讨如何使用密码和salt值结合MD5加密来实现这一功能,主要针对Java编程语言,同时也会涉及到数据库和用户界面的设计。 首先,我们要理解什么是盐值(salt)。在密码学中,salt是一种随机数据,通常与...