什么是md5盐值

本文详细解释了为了防止密码泄露带来的风险,如何通过使用盐值加密来增强密码安全性。通过在密码hash过程中添加随机的盐值,使得相同的密码在不同用户间的hash值变得独一无二,从而有效降低数据库泄露造成的威胁。
摘要由CSDN通过智能技术生成
简单说就是为了使相同的密码拥有不同的hash值的一种手段 就是盐化
MD5自身是不可逆的 但是目前网路上有很多数据库支持反查询
如果用户密码数据库不小心被泄露 黑客就可以通过反查询方式获得用户密码
或者对于数据库中出现频率较高的hash码(即很多人使用的)进行暴力破解(因为它通常都是弱口令)

盐值就是在密码hash过程中添加的额外的随机值
比如我的id是癫ω倒④ゞ  密码是123456 存在数据库中的时候就可以对字符串“123456/癫ω倒④ゞ ”进行hash,而验证密码的时候也以字符串“(要验证的密码)/癫ω倒④ゞ ”进行验证
这样有另外一个笨蛋密码是123456的时候 依然能构造出不同的hash值 并且能成功的验证
这时候我的id就作为盐值 为密码进行复杂hash了 

所以么。。盐值的作用是减少数据库泄露带来的损失
如果你RP非常好 猜中了我的密码是123456 我也阻止不了你啊
 
 
 

一般情况下,系统的用户密码都会经过一系列的加密才会存储到数据库或者别的资源文件。

盐值加密:把你原来密码,加上一些“盐”然后再进行一些列的加密算法。

比如你的密码是:899312 用户名是:gaobing

在security 中盐值加密可以是这样加“盐”的899312{gaobing} 然后 ,在进行一些列的加密。

上一篇日志中介绍了三种登陆设置,这边用数据库的那种作为例子:

复制代码
<authentication-manager> 
    <authentication-provider user-service-ref='myUserDetailsService'> 
   <password-encoder hash="md5"><salt-source user-property="username"/></password-encoder> 
    </authentication-provider> 
</authentication-manager>

<b:bean id="myUserDetailsService" 
    class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl"> 
    <b:property name="dataSource" ref="dataS" /> 
</b:bean>
复制代码

说明:

<salt-source user-property="username"/> 这一句即声明了所加的盐值,即数据库中的username字段。

<password-encoder hash="md5"> 在他的属性中指明了加盐之后的加密算法 即MD5(应该是32位 我测试是32位的)

这样设置后你的数据库中的密码也应该是经过盐值加密的。

比如username:gaobing 在数据库中的password应该是899312{gaobing}经过MD5加密后的 4daf885e05ff45a72ada6652a3727b6a。

在你登陆的时候你输入用户密码后security也会用同样的加密方式去和数据库中的password匹配。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值