大家都知道,MD5加密是不可逆。但事实上,我们通常值的MD5算法。黑客的眼下破解率相对较高。也有非常多站点上干脆就提供批量解密MD5的服务,当然是收费的。http://www.xmd5.org。这里提供一个网址供大家试试。

眼下得知的MD5的破解方式通常是採用保存大量 password与MD5解密后的值的相应关系,随着这样的解密库的数据量越来越庞大。MD5的破解率则会呈上升趋势,那怎样防止MD5或者一些其它加密手段的破解呢?

这里提到一个算法。叫做“salt”算法,也就是我们平时叫做“加盐”的一种算法,那它的原理是什么呢?就是将自己设定的password,加上一个程序猿设定的參数,进行组合后。再通过MD5等手段进行解密。这样,加密后的值黑客撞击的难度就大大增大了。

比方说,我设置的password是123456,这样的password即便被加密成MD5,被破解也是分分钟的事儿。那么我们能够将123456+邮箱名的后10位,这样就会变成123456aat@qq.com,再将这个字符串进行加密,就安全多了。

 以下具体介绍一下加Salt散列的过程。

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

用户注冊时,

  1. 用户输入【账号】和【password】(以及其它用户信息);
  2. 系统为用户生成【Salt值】;
  3. 系统将【Salt值】和【用户password】连接到一起;
  4. 对连接后的值进行散列,得到【Hash值】;
  5. 将【Hash值1】和【Salt值】分别放到数据库中。

用户登录时,

  1. 用户输入【账号】和【password】;
  2. 系统通过username找到与之相应的【Hash值】和【Salt值】。
  3. 系统将【Salt值】和【用户输入的password】连接到一起。
  4. 对连接后的值进行散列。得到【】和【Hash值】是否相等,相等则表示password正确,否则表示password错误。

有时候。为了减轻开发压力,程序猿会统一使用一个salt值(储存在某个地方),而不是每一个用户都生成私有的salt值。

从网上找了一段代码,參照一下:

// 对password进行加盐后加密,加密后再通过Hibernate往数据库里存        String changedPswd=DigestUtils.md5Hex(name+pswd);

版权声明:本文博客原创文章。博客,未经同意,不得转载。

SALT 加密的更多相关文章

  1. shiro入门学习--使用MD5和salt进行加密|练气后期

    写在前面 在上一篇文章<Shiro入门学习---使用自定义Realm完成认证|练气中期>当中,我们学会了使用自定义Realm实现shiro数据源的切换,我们可以切换成从关系数据库如MySQ ...

  2. 密码加SALT原理

    原来这个技术叫SALT,以前我们经常这么用 ============================================================================== ...

  3. (转)浅谈MD5加密算法中的加盐值(SALT)

    我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码. 加Salt可以一定程度上解决这一问题.所谓加Salt方法,就 ...

  4. Web应用你加盐了吗?——浅谈MD5加密算法中的加盐值(SALT)

    转自:http://blog.csdn.net/blade2001/article/details/6341078 我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散 ...

  5. 强力重置ASP.NET membership加密后的密码![转]

    公司网站的用户管理采用的是ASP.NET内置的membership管理,在web.config文件中的密码格式配置是加密了的,passwordFormat="Hashed",这样在 ...

  6. Java中常用的加密方法(JDK)

    加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些 ...

  7. php实现图片加密解密,支持加盐

    一个简单的图片加解密函数 使用client跑,不要使用浏览器跑 qq845875470 ,技术交流 <?php /** * Created by hello. * User: qq 845875 ...

  8. [转载] Java中常用的加密方法

    转载自http://www.iteye.com/topic/1122076/ 加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的 ...

  9. JAVA常用加密解密算法Encryption and decryption

    加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些 ...

随机推荐

  1. Android处理延迟加载的方法

    在项目开发,通过延时载入来实现满足我们的项目要求.那究竟如何来实现延时.以下结合java与android的相关方法来实现延时问题. 一.利用线程的Sleep方法 <span style=&quo ...

  2. POJ--1679--The Unique MST【推断MST是否唯一】

    链接:http://poj.org/problem? id=1679 题意:告诉你有n个点,m条边,以及m条边的信息(起点.终点.权值).推断最小生成树是否唯一 之前是用另外一种方法做的.复杂度最高可 ...

  3. Cocos2d-x 2.2.3 Android配置

    今天总结出来的部署流程,已经成功把自己的项目编译到android真机上.省去了安装ndk等步骤 环境: win7 64位 1.导入项目到eclipse 2.导入libcocos2dx 样例:C:\co ...

  4. ASP.Net中使用XMLDataSource

    在Web开发中,程序和数据库打交道是常有的事情.在平时使用过程中,使用较多的是MS SQLSERVER,因此经常用到SQLDataSource将数据绑定的数据控件上.有时数据量较小,无需要在数据库中创 ...

  5. Flux demo

    Flux demo Introduction flux应用架构如下图所示,本文并不是讲述怎么立即做一个酷炫的应用,而是讲述如何依照这种框架,来进行代码的组织.我们先把这个流程转述为文字:抛开与webA ...

  6. Swift的74标准功能

    Swift中共同拥有74个内建函数,可是在Swift官方文档("The Swift Programming Language")中仅仅记录了7中.剩下的67个都没有记录. 本文将列 ...

  7. cocos2d-x3.2中map的基本操作和使用

    在游戏开发中,我们有时候会用到map,而map的使用方法我简单给大家介绍一下.Map是c++的一个标准容器,她提供了非常好一对一的关系,在一些程序中建立一个map能够起到事半功倍的效果,总结了一些ma ...

  8. Java变量参数

    Java1.5添加新功能:可变参数:它适用于参数不确定性的数量,判断形势的类型.java变量参数数组操作. 特点: 1.今天的参数列表只能持续. 2.省略号(...)位于变量类型和变量名之间,前后有无 ...

  9. hdu 5066 Harry And Physical Teacher(Bestcoder Round #14)

    Harry And Physical Teacher Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Ja ...

  10. 关闭safari浏览器button默认样式

    前两天又遇到一个头疼的问题,在Chrome上调试好的样式,去到手机上打开,傻了... 这是什么鬼... 搜了一下,才知道这是appearance属性搞的鬼.. . 比方你想让一个div拥有button ...