什么是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匹配。

时间: 2024-08-29 15:25:51

什么是md5盐值的相关文章

java中spring-shiro实现密码的MD5盐值加密

看了网上很多教程,都提到有配置spring shiro的密码加密方式,甚至给出了自定义的Class来实现.却很少有通过配置来解决的. 密码的盐值加密方式应该是非常通用的,也可以算是基础吧.按理说spring shiro不可能没有实现,让用户自己去实现吧. 通过读源码看各种关系,摸索出shiro的MD5盐值加密方式,分享一下 (shiro的maven仓库中的source从来都是个空文件,github上的源码又没有stable版本的代码,要调试很恼火),当然阅读源码可以直接到github上,http

如何给MD5加上salt随机盐值_相关技巧

如何加点盐(salt)? 为了加强MD5的安全性,从而加入了新的算法部分即加盐值,加盐值是随机生成的一组字符串,可以包括随机的大小写字母.数字.字符,位数可以根据要求而不一样,使用不同的加盐值产生的最终密文是不一样的:      1).首先我们得到的是明文的hash值      2).进行计算获取MD5明文hash值      3).随机生成加盐值并插入      4).MD5插入加盐值得到的hash      5).得到最终的密文 看一个简单的加salt函数: /** * MD5加SALT函数

Ubuntu中如何检查文件的MD5校验值?

一年以后,即1991年,Rivest开发出技术上更为趋近成熟的md5算法.它在MD4的基础上增加了"安全-带子"(safety-belts)的概念.虽然MD5比MD4稍微慢一些,但却更为安全.这个算法很明显的由四个和MD4设计有少许不同的步骤组成.在MD5算法中,信息-摘要的大小和填充的必要条件与MD4完全相同.Den boer和Bosselaers曾发现MD5算法中的假冲突(pseudo-collisions),但除此之外就没有其他被发现的加密后结果了. MD5用的是哈希函数,在ht

java HTML5 学习资料汇总

目前JAVA可以说是产业界和学术界最热门的语言,许多人都很急切想把JAVA学好. 但学习是需要步骤的,除非像电影中演的那样,能够把需要的专业技巧下载到脑海:主角只花了几秒下载资料,就马上具备飞行员的技巧,或是武侠小说中的运功传送内力的方式,否则花上一段时间苦学是少不了的.花时间,不打紧,就怕方法错误,事倍功半. java 学习文章推荐.java学习线路.java 知识图谱. HTML5 微数据 RDFa/微格式 使用 jQuery 的 Autocomplete 插件实现input输入提示功能 创

我的Java开发学习之旅------&amp;gt;工具类:Java获取字符串和文件进行MD5值

ps:这几天本人用百度云盘秒传了几部大片到云盘上,几个G的文件瞬秒竟然显示"上传成功"!这真让我目瞪口呆,要是这样的话,那得多快的网速,这绝对是不可能的,也许这仅是个假象.百度了一下才发现所谓的"秒传"是常见的"忽略式"上传方式,就是您上传了一个文件名为111.exe,MD5为一个数,有一个网友以前也上传一个叫222.exe,MD5和您上传的文件MD5码一模一样,所以这个文件上传到服务器上的时间就很短了,这是因为别人上传过这个文件,您上传这个文件

Android Studio生成签名文件,自动签名,以及获取SHA1和MD5值

前言: 作为谷歌在2013年为开发者提供的IDE环境工具Android Studio,从几次更新之后Android Studio已经成为了非常强大的IDE开发环境.谷歌也宣布Android Studio将取代Eclipse .而使用as进行开发,已经倍受移动开发者的喜爱.废话我们这里就不再多说,不用不知道,谁用吓一跳.本文主要讲到是开发过程中经常需要用到的.如何使用as生成签名文件,配置gradle让APP自动签名以及如何生成SHA1和MD5值. 一.生成签名文件 1. 在as菜单栏中找到"bu

计算文件的MD5值上传到服务器 下载验证文件是否被篡改

using System; using System.Windows.Forms; using System.Security.Cryptography; using System.IO; namespace 计算文件的MD5 {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }         priv

百度网盘的离线秒杀如何实现(核心问题是如何获取链接的MD5值)

问题描述 我做了一个类似百度网盘功能的私人网盘,单纯是玩玩的,已经实现了文件的秒传,现在增加了一个离线下载的功能.虽然功能上模拟出了一半,但是唯一的问题就是,百度网盘的离线下载是可以秒杀的,但是我的网盘做不了.因为找了很久也找不到不下载文件就可以获得文件MD5值的方法.我的思路是,如果可以从链接就可以获得MD5值的话,那我可以和我数据库里面已存的文件进行对比,有的话就不用下载,没有的话再下载.但是现在获取不了(又或者说我不会获取),硬要实现的话只能下载好文件,计算出MD5值,再对比,有相同的,删

MD5加密算法在网站数据库安全方面的应用与查表攻击

编者按:本文作者为北师大的大三学生张俏,女Geek,在CSDN等各大网站的用户数据被泄露之后,她就MD5加密问题写下此文,发表了自己的看法,如果有读者想要跟作者进一步探讨,可以在新浪微博@阿豆拉. MD5为现在应用最广泛的Hash算法之一,在1992年由MIT 的Ronald L. Riverst提出,由MD4演化而来.该算法广泛应用于互联网网站的用户数据加密,能够将用户密码加密为128位的长整数.数据库并不明文存储用户密码,而是在用户登录时将输入密码字符串进行MD5加密,与数据库中所存储的MD