Java
获取文件的MD5
,核心都是通过Java
自带的MessageDigest
类来实现。获取文件MD5
值主要分为三个步骤,第一步获取文件的byte
信息,第二步通过MessageDigest
类进行MD5
加密,第三步转换成16进制的MD5
码值。
方法一
/**
* 获取上传文件的md5
* @param file
* @return
* @throws IOException
*/
public String getMd5(MultipartFile file) {
try {
//获取文件的byte信息
byte[] uploadBytes = file.getBytes();
// 拿到一个MD5转换器
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] digest = md5.digest(uploadBytes);
//转换为16进制
return new BigInteger(1, digest).toString(16);
} catch (Exception e) {
log.error(e.getMessage());
}
return null;
}
方法二
使用 Java
自带的 commons-codec
包,获取16进制 MD5
值的方法。DigestUtils.md5Hex()
:提供三种类型( byte[]
、InputStream
、String
)生成MD5
/**
* 获取上传文件的md5
* @param file
* @return
* @throws IOException
*/
public String getMd5(MultipartFile file) {
try {
byte[] uploadBytes = file.getBytes();
//file->byte[],生成md5
String md5Hex = DigestUtils.md5Hex(uploadBytes);
//file->InputStream,生成md5
String md5Hex1 = DigestUtils.md5Hex(file.getInputStream());
//对字符串生成md5
String s = DigestUtils.md5Hex("字符串");
return md5Hex ;
} catch (Exception e) {
log.error(e.getMessage());
}
return null;
}
学到了
这个是我基于分片上传研究的。