当前位置: 首页 > news >正文

什么是md5盐值

简单说就是为了使相同的密码拥有不同的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匹配。


转载于:https://www.cnblogs.com/xiaowangba/archive/2012/10/22/6314493.html

相关文章:

  • 自己动手更换近光灯
  • 物理层组件小结
  • 日语学习资料
  • 手动检测网站的SQL注入漏洞
  • 有人黑我们程序员
  • iOS应用程序状态切换相关
  • 十大最佳外国Android游戏下载平台
  • Scala 的学习笔记系列(持续更新中)
  • event.srcElement 和 e.target 用法
  • windows office 界面改进(续)
  • Surface体验WS2012中RDS的RemoteFX虚拟桌面
  • 【转载】Node.js + Express 多个 Layout 文件应用
  • 陶哲轩实分析 推论 7.5.3 (比例判别法) 证明
  • Linux 文件描述符与索引节点
  • UIControl IOS控件编程—IOS开发
  • 网络传输文件的问题
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Cumulo 的 ClojureScript 模块已经成型
  • input的行数自动增减
  • JavaScript 基础知识 - 入门篇(一)
  • jdbc就是这么简单
  • markdown编辑器简评
  • Phpstorm怎样批量删除空行?
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • vue--为什么data属性必须是一个函数
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 软件开发学习的5大技巧,你知道吗?
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (06)金属布线——为半导体注入生命的连接
  • (C语言)逆序输出字符串
  • (SpringBoot)第二章:Spring创建和使用
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (一)VirtualBox安装增强功能
  • .net refrector
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .Net程序帮助文档制作
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET业务框架的构建
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • @ModelAttribute使用详解
  • [] 与 [[]], -gt 与 > 的比较
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [Android]How to use FFmpeg to decode Android f...
  • [Bugku]密码???[writeup]
  • [codevs 1288] 埃及分数 [IDdfs 迭代加深搜索 ]