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消息摘要算法

  

猜你喜欢

转载自www.cnblogs.com/Scorpicat/p/12537481.html
97