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

Posted scorpicat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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消息摘要算法

  

以上是关于97 加密算法与消息摘要算法的主要内容,如果未能解决你的问题,请参考以下文章

password学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)

常用消息摘要算法介绍

信息加密与信息摘要2

信息加密与信息摘要2

信息加密与信息摘要2

快速了解常用的消息摘要算法,再也不用担心面试官的刨根问底