`
vincent_com
  • 浏览: 43806 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类

安全密码机制(salt机制)

阅读更多
近日,CSDN密码被泄漏事件,确实不该,大互联网企业,做法欠妥,也没有给用户一个很好的交代。大家都在说为什么没有给密码加点盐,Salt散列。
我们知道,如果直接对密码进行散列,那么黑客(统称那些有能力窃取用户数据并企图得到用户密码的人)可以对一个已知密码进行散列,然后通过对比散列值得到某用户的密码。换句话说,虽然黑客不能取得某特定用户的密码,但他可以知道使用特定密码的用户有哪些。

加 Salt可以一定程度上解决这一问题。所谓加Salt,就是加点“佐料”。其基本想法是这样的——当用户首次提供密码时(通常是注册时),由系统自动往这 个密码里撒一些“佐料”,然后再散列。而当用户登录时,系统为用户提供的代码撒上同样的“佐料”,然后散列,再比较散列值,已确定密码是否正确。

这 里的“佐料”被称作“Salt值”,这个值是由系统随机生成的,并且只有系统知道。这样,即便两个用户使用了同一个密码,由于系统为它们生成的salt值 不同,他们的散列值也是不同的。即便黑客可以通过自己的密码和自己生成的散列值来找具有特定密码的用户,但这个几率太小了(密码和salt值都得和黑客使 用的一样才行)。

下面详细介绍一下加Salt散列的过程。介绍之前先强调一点,前面说过,验证密码时要使用和最初散列密码时使用“相同的”佐料。所以Salt值是要存放在数据库里的。



图1. 用户注册

如图1所示,注册时,

1)用户提供密码(以及其他用户信息);
2)系统为用户生成Salt值;
3)系统将Salt值和用户密码连接到一起;
4)对连接后的值进行散列,得到Hash值;
5)将Hash值和Salt值分别放到数据库中。


图2. 用户登录

如图2所示,登录时,

1)用户提供用户名和密码;
2)系统通过用户名找到与之对应的Hash值和Salt值;
3)系统将Salt值和用户提供的密码连接到一起;
4)对连接后的值进行散列,得到Hash'(注意有个“撇”);
5)比较Hash和Hash'是否相等,相等则表示密码正确,否则表示密码错误。
分享到:
评论

相关推荐

    使用密码和salt值联合密码加密实现登录注册功能

    在IT行业中,安全是至关重要的,特别是在用户登录注册系统中。...当然,实际应用中,还应考虑其他安全措施,如使用更安全的哈希算法(如bcrypt或scrypt)和迭代次数,以及使用HTTPS等传输层安全机制。

    postfixadmin忘记密码后的修改密码方法详解

    md5crypt是一种基于MD5散列算法的密码加密方式,它通常使用一个特定的盐值(salt)来增加密码的复杂度,从而使得即使两个用户使用相同的密码,其加密后的结果也不会相同,这大大增强了密码的安全性。md5crypt函数会...

    crypt-md5源代码,这是linux里面最常用密码校验算法,利用salt和password和crypt函数生成hash值

    总之,`crypt-md5`是Linux系统中一种常见的密码校验机制,它通过MD5哈希和盐值提高了密码的安全性。虽然MD5在当前已被视为不那么安全,但在许多旧系统和应用程序中仍然广泛使用。了解并理解`crypt-md5`的工作原理...

    管理员密码查看 可看密码

    6. **密码恢复机制**:为了应对管理员忘记密码的情况,系统通常会有一个安全的密码恢复流程,如通过预设的安全问题、备用电子邮件或短信验证。 7. **安全政策**:组织应制定并执行严格的安全政策,规定密码管理、...

    网络安全-前端安全-防御手段.pdf

    本节课主要讲解前端安全防御手段,包括密码安全、浏览器安全控制、Content-Security-Policy(CSP)等。 三、课堂目标 通过本节课的学习,学生将了解前端安全防御手段的重要性和实现方法,掌握密码安全、浏览器安全...

    swfit 开发的应用密码框架

    这通常涉及到哈希算法(如SHA-256)和盐值(salt)的使用,以增加密码的安全性。哈希函数将明文密码转换为不可逆的散列值,而盐值则能防止彩虹表攻击。 2. 设置应用密码:新密码的设置应包括强度检查,确保其复杂性...

    aix密码加密方式

    在早期版本如AIX5.3 TL07之前,AIX主要使用的是传统的`crypt`加密方法,这种加密方式基于DES算法,并且提供salt机制。但在AIX5.3 TL07之后,为了增强安全性,AIX引入了更为安全的加密方法,例如MD5、SHA-1和SHA-256...

    仿微信支付密码

    1. 加密存储:使用安全的哈希函数(如SHA-256)结合盐值(salt)对密码进行加密,确保即使数据泄露也无法还原原始密码。 2. 输入验证:前端可以使用JavaScript进行简单的格式验证,确保输入的是6位数字。 3. 服务器...

    Java安全知识点详解:加密、认证、防护和漏洞扫描

    盐值(Salt)增加密码哈希的安全性,使相同密码的哈希结果不同。常见的密码存储方法包括明文、哈希和加盐哈希。 最后,安全日志和审计对于监控系统安全至关重要。它们记录系统活动,帮助发现异常,工具如ELK Stack...

    Jenkins修改密码.docx

    在使用Jenkins的过程中,有时我们可能需要更改管理员账户的密码,特别是在初次安装时设置了一个简单的密码,或者出于安全考虑需要定期更换密码的情况下。本文将详细介绍如何在Jenkins中修改管理员密码,并深入探讨...

    php100 2012版 17集CodeIgniter框架教程(3)密码

    此外,还可以结合使用盐值(Salt)进一步增加密码的复杂度,防止彩虹表攻击。 ### 密码验证流程 密码验证过程通常包括以下几个步骤: 1. 用户输入用户名和密码。 2. 服务器端从数据库中检索对应的密码哈希值。 3. ...

    对旧的用户密码系统的改造

    3. **多因素认证(MFA)**:为了增强安全性,改造可能引入了多因素认证机制,比如短信验证码、生物特征(指纹、面部识别)或硬件令牌,这样即使密码被盗,也需要额外的信息才能完成登录。 4. **安全策略**:可能会...

    Navicat密码加密解密

    4. 安全存储:不要在不安全的地方存储密码,如明文保存在文档或邮件中。可以考虑使用密码管理器来安全地存储和管理这些信息。 总结,Navicat的密码加密和解密涉及到数据安全和个人隐私,理解这一过程有助于更好地...

    Java安全知识点总结

    为确保密码的安全性,应使用适当的哈希算法进行存储,并结合加盐(salt)和迭代次数来增强密码的强度。 安全配置:Java应用程序的安全配置文件(如Web.xml、application.properties)需要正确设置,以防止常见的...

    基于PHP的PDMPHP密码管理系统源码.zip

    在密码管理系统的开发中,PHP可以用于创建动态网页,处理表单数据,与数据库进行交互,以及实现安全的密码存储机制,如哈希加盐(hashing with salt)来保护用户的敏感信息。 【压缩包子文件的文件名称列表】中的...

    一个用于简单密码加密的类c#

    7. **盐值(Salt)**:盐值是一种附加信息,与密码一起存储,可以防止彩虹表攻击。在混淆密码时,盐值可以作为混淆的一部分,增加破解的难度。 8. **验证机制**:当用户输入密码时,需要有相应的解混淆过程来验证...

    asp.net access 加密密码

    2. **盐值(Salt)和哈希**:为了进一步增强哈希的安全性,可以使用随机生成的盐值与密码结合后再进行哈希。盐值增加了破解哈希的难度,因为攻击者必须知道特定的盐值才能成功破解。在ASP.NET中,可以自定义实现这一...

    页面密码加密传输代码

    综上所述,"页面密码加密传输代码"涵盖了HTTPS通信、哈希算法、JavaScript库的使用、客户端加密以及更高级的认证机制,这些都是保护用户信息安全的关键技术。在实际应用中,应根据项目需求选择合适的加密策略和安全...

    基于.NET的分布式系统用户密码加密方案设计

    2. **加入盐值增加安全性**:为了进一步提高安全性,系统会在原始密码前加上一个随机生成的盐值(Salt),再进行哈希运算。这样即使两个用户使用相同的密码,由于盐值不同,生成的哈希值也会不同,从而提高了密码的...

    密码保护 源代码 c++ 完整程序 密码保护系统

    标题中的“密码保护”指的是一个基于C++编程语言的软件应用,其主要功能是为用户提供安全的密码管理机制。这个程序可能包含一个完整的源代码库,允许用户查看、理解和修改程序的工作原理。"CB"可能是项目开发环境或...

Global site tag (gtag.js) - Google Analytics