大家都知道,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. React.js入门笔记 创建hello world 的6种方式

    一.ReactJS简介 React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站. ...

  2. kd-tree注解 &amp; bzoj 2648 &amp; 2716 &amp; 3053 解决问题的方法

    [KD-TREE简介]于SYC1999大神"迷住"下一个.我开始接触这样的算法. 首先.这个概念大概能去百度百科.详细的实施.我在看RZZ的代码长大的. 我们能够想象在平面上有N个 ...

  3. 仿jQuery之链式调用

    链式调用的形式其实就是对象调用一连串的方法.为什么能连续调用这么多的方法?因为调用方法返回调用的对象,于是乎就可以一如既往,一往无前地调用下去.链式调用的原理就是在方法中返回执行上下文this,每次调 ...

  4. 由于抽签HT For Web ComboBox下拉框组件

    传统HTML5的下拉框select仅仅能实现简单的文字下拉列表,而HT for Web通用组件中ComboBox不仅可以实现传统HTML5下拉框效果,并且可以在文本框和下拉列表中加入自己定义的小图标, ...

  5. 微信消息体签名及加解密功能详细解析以及.net实现

    原文:微信消息体签名及加解密功能详细解析以及.net实现 前言 微信消息体签名及加密功能已上线,明文传输确实存在安全风险,鉴于微信的用户范围使用之广泛,必定会成为众矢之的.所以大家还是尽快接入安全模式 ...

  6. 从源码看Android中sqlite是怎么读DB的(转)

    执行query 执行SQLiteDatabase类中query系列函数时,只会构造查询信息,不会执行查询. (query的源码追踪路径) 执行move(里面的fillwindow是真正打开文件句柄并分 ...

  7. 你可以不知道原因,但是,我们不能停止努力。httplook抓取路由配置界面信息

    因为实验室的项目要求,需要动态控制路由的配置信息,我们知道.路由选择需要购买的访问后,:http://192.168.1.1 路由配置页面.配置,不须要人手工操作.甚至定时任务配置的时候,就须要进一步 ...

  8. vs2012代码段,快捷键,snippet 的使用

    这篇还是介绍怎么简单我们编写代码------本想放在上一篇   插件    一起,但是怕搜不到, 大神们就没法给我教更好的方式,所以就另写了一篇 [大家看完后,插件resharp如果能实现这效果,请教 ...

  9. 多层次的Json字符串转化为对象

    using Arvato.CRM.DataTrans.ConsoleHost.Model;using System;using System.Collections.Generic;using Sys ...

  10. 【足迹C++primer】49、超载,变化,运营商

    超载,变化,运营商 Conversion Operators 转换操作符 operator type() const Conversions to an array or a function typ ...