当前位置:   article > 正文

java sha256算法_一文详解密码学Hash算法的安全问题(加盐+HMAC)

java sha256 加盐

上一篇文章- 一文详解密码学中的Hash 算法, 我们介绍了密码学中Hash算法的性质、分类以及使用场景。在使用场景中,我们介绍了这些场景的具体使用方式方法。为了保持文章的连贯性和可读性, 对于其中的潜在安全问题,我们简单一笔带过。今天我们另开一篇文章,着重介绍密码学Hash算法的主要安全问题以及对应的解决办法。希望能大家使用密码学Hash算法带来更多维度的考量。

密码学Hash算法作为身份验证的安全问题

上一篇文章我们介绍了怎样使用密码学Hash算法的单向特性来作为用户身份验证的方案:

密码学Hash算法必须具备有单向性,也就是不可逆,不能从Hash值逆向推算出原始值,基于这种特性,我们可以用来进行用户身份验证。用户登录都需要进行用户名密码的校验,如果我们将用户密码存在数据库里面,一旦数据库泄露,那就所有人的密码都泄露了,这样的事情前几年发生了不少!那么如果我们将用户的原始密码进行Hash运算,并只是把Hash值保存在数据库里面,当用户登录时,我们计算用户输入密码的Hash值,并与数据库的Hash值进行比较,如果相同则验证通过,不同则失败。而用户的明文密码不进行保存,这样一来,万一数据库泄露了,也不会一下子泄露了全部的用户密码

简单地说 用户的密码在系统中变成了 f(p) = h(p), 而验证的时候, 计算h(p') = h(p), 其中p为用户设置的密码,p'为登录时用户输入的密码,这样系统就可以不用明文保存用户的密码。比如常见密码password1 用SHA256保存在数据库就变成了0b14d501a594442a01c6859541bcb3e8164d183d32937b851835442f69d5c94e , 登录时系统校验 SHA(input)是否等于这个Hash值,相同则通过验证。

感觉这样很可行,就连系统管理员直接查DB也不知道你的密码是什么,因为目前常用的Hash算法不可逆的特性都还没被打破,也就是基本没办法从Hash值反推出原始消息。

重要声明

我们这里将会根据计算机网络安全所遇到的问题进行介绍,目的是提高我们开发人员的密码安全意识,提供系统的攻防能力!一定要在合法的前提下进行网络安全的攻防演练!

彩虹表

什么是彩虹表

道高一尺魔高一丈!反推不行,那我就干脆“正推”。上一篇文章我们介绍Hash算法的时候有一个特性相同的输入消息总是能得到相同的Hash值. 那如果有一个Hash值的表,里面包含了原文以及Hash值,如果我的Hash值跟你系统的Hash值一样,那我就可以知道你的密码是什么了!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/497639
推荐阅读
相关标签
  

闽ICP备14008679号