SALT 加密

众所周知,MD5加密是不可逆的,但实际上我们平时的值的MD5算法,黑客的目前破解率相对较高,也有很多网站上干脆就提供批量解密MD5的服务,当然是收费的。http://www.xmd5.org,这里提供一个网址供大家试试。

目前得知的MD5的破解方式一般是采用保存大量 密码与MD5解密后的值的对应关系,随着这种解密库的数据量越来越庞大,MD5的破解率则会呈上升趋势,那如何防止MD5或者一些其他加密手段的破解呢?

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

比如说,我设置的密码是123456,这种密码即便被加密成MD5,被破解也是分分钟的事儿。那么我们可以将123456+邮箱名的后10位,这样就会变成[email protected],再将这个字符串进行加密,就安全多了。

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

用户注册时,

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

用户登录时,

  1. 用户输入【账号】和【密码】;
  2. 系统通过用户名找到与之对应的【Hash值】和【Salt值】;
  3. 系统将【Salt值】和【用户输入的密码】连接到一起;
  4. 对连接后的值进行散列,得到【Hash值2】(注意是即时运算出来的值);
  5. 比较【Hash值1】和【Hash值2】是否相等,相等则表示密码正确,否则表示密码错误。

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

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

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

时间: 2024-10-28 11:50:20

SALT 加密的相关文章

spring security中配置密码为md5的带salt加密

spring security中配置密码为md5的带salt加密 service: private Md5PasswordEncoder encoder; //spring security md5 public Md5PasswordEncoder getEncoder() { return encoder; } @Resource public void setEncoder(Md5PasswordEncoder encoder) { this.encoder = encoder; } @O

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

我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码. 加Salt可以一定程度上解决这一问题.所谓加Salt方法,就是加点“佐料”.其基本想法是这样的:当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列.而当用户登录时,系统为用户提供的代码撒上同样的“佐料”,然后散列,再比较散列值,已确定密码是否正确. 这里的“佐料”被称作“Salt值”,这个值是由系统随机生成的,并且只有系统

PHP的加密方法汇总

PHP的加密主要有4种方法,除此之外还有一种是URL的加密和解密.希望可以对你们开发有用. 顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百度云下载,这样以后你们开发就可以直接翻笔记不用百度搜那么麻烦了.  笔记链接:http://pan.baidu.com/s/1qYdQdKK 密码:pvj2   一.md5()加密技术语法: string md5(string $str[,bool $raw_output=false]):计算str的

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

一个简单的图片加解密函数 使用client跑,不要使用浏览器跑 qq845875470 ,技术交流 1 <?php 2 /** 3 * Created by hello. 4 * User: qq 845875470 5 * Date: 2016/4/2 6 * Time: 11:21 7 */ 8 9 $notice = <<<A 10 为了稳定性,必须在客户端跑 11 格式 :php path=D:/xxx/uuu type=en is_copy=1 salt=xxx 12 参

(转,学习记录)MD5加密算法中的加盐值(SALT)

我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码. 加Salt可以一定程度上解决这一问题.所谓加Salt方法,就是加点“佐料”.其基本想法是这样的:当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列.而当用户登录时,系统为用户提供的代码撒上同样的“佐料”,然后散列,再比较散列值,已确定密码是否正确. 这里的“佐料”被称作“Salt值”,这个值是由系统随机生成的,并且只有系统

java中常用的加密方式

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些资料将加密直接分为对称加密和非对称加密). 双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文.而单向加密只是对信息进行了摘要计算,不能通过算法生成明文,单向加密从严格意思上说不能算是加密的一种,应该算是摘要算法吧.具体区分可以参考: (本人解释不清呢 -- ) http://secur

ORACLE 透明加密(TDE)

/* author:CH date:2015 theme:oracle TDE test */ 一透明加密(TDE, Transparent Data Encryption) 参考: http://www.oracle.com/technetwork/cn/tutorials/tde-096772-zhs.html#t3 http://www.eygle.com/archives/2011/09/oracle_transparent_data_encryption.html http://blo

浅谈密码加SALT原理(转载)

原文出处:http://www.2cto.com/Article/201201/117051.html 我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码.  加Salt可以一定程度上解决这一问题.所谓加Salt方法,就是加点“佐料”.其基本想法是这样的:当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列.而当用户登录时,系统为用户提供的代码撒上同样的“佐料”,然后散列,再比

密码加SALT原理

原来这个技术叫SALT,以前我们经常这么用 ==================================================================================== 我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码. 加Salt可以一定程度上解决这一问题.所谓加Salt方法,就是加点“佐料”.其基本想法是这样的:当用户首次提供密码时(通常是注册时),由系统自动往