java实现MD5文件加密

java

package me.zhengjie.modules.logdump.util;

import java.io.FileInputStream;

import java.io.IOException;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

/**

* @Description MD5加密

* @Author chenchen

* @Date 2021/2/19 9:47

*/

public class MD5Util {

static char[] hexDigits = {\'0\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'a\', \'b\', \'c\', \'d\', \'e\', \'f\'};

/**

* 对文件全文生成MD5摘要

*

* @param filePath 要加密的文件

* @return MD5摘要码

*/

public static String getMD5Encrypt(String filePath) {

FileInputStream input = null;

try {

// 生成MessageDigest 对象

// MessageDigest.getInstance("MD5"):创建MD5加密

MessageDigest md = MessageDigest.getInstance("MD5");

input = new FileInputStream(filePath);

byte[] buffer = new byte[2048];

int length = -1;

while ((length = input.read(buffer)) != -1) {

//参数为待加密数据

md.update(buffer, 0, length);

}

//加密之后生成的密文的字节数组

byte[] b = md.digest();

//转化为16进制字符串

return byteToHexString(b);

} catch (NoSuchAlgorithmException | IOException e) {

e.printStackTrace();

return null;

} finally {

try {

if (input != null)

input.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

/**

* 把byte[]数组转换成十六进制字符串表示形式

*

* @param b 要转换的byte[]

* @return 十六进制字符串表示形式

*/

private static String byteToHexString(byte[] b) {

// 用字节表示就是 16 个字节

// 每个字节用 16 进制表示的话,使用两个字符,所以表示成 16 进制需要 32 个字符

// 比如一个字节为01011011,用十六进制字符来表示就是“5b”

char[] str = new char[16 * 2];

int k = 0; // 表示转换结果中对应的字符位置

for (int i = 0; i < 16; i++) { // 从第一个字节开始,对 MD5 的每一个字节转换成 16 进制字符的转换

byte byte0 = b[i]; // 取第 i 个字节

str[k++] = hexDigits[byte0 >>> 4 & 0xf]; // 取字节中高 4 位的数字转换, >>> 为逻辑右移,将符号位一起右移

str[k++] = hexDigits[byte0 & 0xf]; // 取字节中低 4 位的数字转换

}

return new String(str);

}

public static void main(String[] args) {

String md5Encrypt = getMD5Encrypt("C:\\Users\\xx\\Desktop\\日志.txt");//53d79ae27443eebc1385866a081bd9f5

System.out.println(md5Encrypt);

if ("53d79ae27443eebc1385866a081bd9f5".equals(md5Encrypt))

System.out.println("文件内容一致");

}

}

 

以上是 java实现MD5文件加密 的全部内容, 来源链接: utcz.com/z/392317.html

回到顶部