• 97 加密算法与消息摘要算法


    一 加密算法

    • 应用于数据传输
    • 通过算法,可以得到加密前的数据

    二 消息摘要算法

    • 应用于数据校验,比如文件完整性验证,存储密码
    • 根据算法获得的结果长度是固定的,不同的算法有不同的数据长度
    • 有不同消息获得同样运算结果,但概率极低
    • 相同的数据通过同一个算法获得的结果一定相同

    所以我们在说数据库存储用户密码时,要使用消息摘要算法而不是加密算法, 因为加密算法是可逆的,而消息摘要算法是不可逆的。这样,即使在数据库泄漏时,也不会暴露密码。

    我们存储用户通过算法后得到的数据,当用户登录时,通过此算法对用户输入的密码进行运算,如果密码正确,则运算的结果也一定是与数据库中存储的数据符合的。

    三 在java中使用消息摘要算法

    方法一:spring自带的摘要算法工具DigestUtils

    String password = "heyuhong";
    //消息摘要算法
    String md5Message = DigestUtils.md5DigestAsHex(password.getBytes());
    

      

    方法二:依赖包:Commons-codec

    此工具附带了多种消息摘要算法,对比上面的spring自带的算法来说,会比较好用。

    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
    </dependency>
    

      

    使用:

     String passowrd = "xxx";
    String md5Password=DigestUtils.md5Hex(password);//md5消息摘要算法

      

    推荐一种符合常规网站要求的密码:

    P@ssw0rd跟上一个你自己的标识号如生日。我们可以看到P@ssw0rd满足大小写及特殊符号和8位的要求,满足大多数网站的高级密码要求。再跟上一个属于自己的标识号就很棒了。

    例如P@ssw0rdcaiwei

  • 相关阅读:
    2013第47周日整理
    2013第47周六笔记本散热及相关问题思考
    myeclipse中控制台日志比实际晚8小时解决方法及java日志处理
    2013第47周五抱怨负能量
    ORM框架
    什么是IT
    内网port映射具体解释(花生壳)
    DrawText的使用
    socket编程原理
    hibernate学习——Set集合配置
  • 原文地址:https://www.cnblogs.com/Scorpicat/p/12537481.html
Copyright © 2020-2023  润新知