哈希函数就是能将任意长度的数据映射为固定长度的数据的函数。哈希函数返回的值被叫做哈希值、哈希码、散列,或者直接叫做哈希。
信息摘要算法是hash算法的一种,具有以下特点:
java中通过MessageDigest来为程序提供消息摘要算法的功能,例如md5 和sha,这个经常会使用的到,这里就不多解释了

标记解释
Security.getProviders() 方法获取digest()方法之后,MessageDigest 对象被重新设置成其初始状态由于commons-codec包中已经封装好了一些使用的方法,引入依赖,直接调用即可
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.4</version>
</dependency>
package com.geenk.web.util;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.security.MessageDigest;
/**
* @author DUCHONG
* @since 2018-05-02 9:18
**/
public class EncryptionUtils {
public static String base64Encode(String data){
return Base64.encodeBase64String(data.getBytes());
}
public static byte[] base64Decode(String data){
return Base64.decodeBase64(data.getBytes());
}
public static String md5(String data) {
return DigestUtils.md5Hex(data);
}
public static String sha1(String data) {
return DigestUtils.shaHex(data);
}
public static String sha256Hex(String data) {
return DigestUtils.sha256Hex(data);
}
//计算文件的hash值,可以对比文件是否有修改
public static String getMD5File(File file){
try {
return DigestUtils.md5Hex(new FileInputStream(file));
}
catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
原文:https://www.cnblogs.com/geekdc/p/8979736.html