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

  • 相关阅读:
    apue学习笔记(第一章UNIX基础知识)
    批处理之发布新版本
    在Vista或Windows 7系统上安装Sharepoint 2007
    SharePoint Server 2007 简体中文下载
    sql连接字符串的方法
    共享本地的无线网络
    FastReport报表
    C# 语音识别(文字to语音、语音to文字)
    C#调用脚本语言(三)-- IronJS 与 IronLua 简单方法性能比较
    VS2010中出现无法嵌入互操作类型
  • 原文地址:https://www.cnblogs.com/Scorpicat/p/12537481.html
Copyright © 2011-2022 走看看