zoukankan      html  css  js  c++  java
  • 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);

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

  • 相关阅读:
    Solution: Win 10 和 Ubuntu 16.04 LTS双系统, Win 10 不能从grub启动
    在Ubuntu上如何往fcitx里添加输入法
    LaTeX 笔记---Q&A
    Hong Kong Regional Online Preliminary 2016 C. Classrooms
    Codeforces 711E ZS and The Birthday Paradox
    poj 2342 anniversary party
    poj 1088 滑雪
    poj 2479 maximum sum
    poj 2481 cows
    poj 2352 stars
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4686250.html
Copyright © 2011-2022 走看看