• SALT 加密


           大家都知道,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值2】(注意是即时运算出来的值);
    5. 比較【Hash值1】和【Hash值2】是否相等,相等则表示password正确,否则表示password错误。

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

    从网上找了一段代码,參照一下
    // 对password进行加盐后加密,加密后再通过Hibernate往数据库里存        String changedPswd=DigestUtils.md5Hex(name+pswd);

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

  • 相关阅读:
    “ResGen.exe”已退出,代码为2 问题处理
    在不同域中各个系统拥有自已独立的用户系统时的单点登录问题
    SQL SERVER 表分区
    用《捕鱼达人》去理解C#中的多线程
    浅谈ThreadPool 线程池(引用)
    解决chrome和firefox flash不透明的方法
    浅谈CSRF攻击方式(转)
    SQL语句创建相同结构的表
    如何识别伪静态网页
    在drop user之前,建议获取该用户的依赖情况
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4686250.html
Copyright © 2020-2023  润新知