java获取文件MD5,获取字符串MD5

获取md5值4个步骤:
1.创建MessageDigest对象md5。
2.使用md的update(byte[] buffer)方法将数据更新到md5对象中。
3.使用md5的digest()方法获得摘要,该摘要是一个长度为16的数组。
4.将该摘要数组转换为32位的md5值.
【java获取文件MD5,获取字符串MD5】注意:如果要获得16位的md5值就是取32位的md5值的中间16位。可以使用subString(8,24)截取。


以下是获得文件和字符串md5的方法,去除main方法即可作为一个工具类。

package com.wenba1314.tools; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Tool { private static MessageDigest md; static { try { //初始化摘要对象 md = MessageDigest.getInstance("md5"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } public static void main(String[] args) throws IOException { System.out.println(generateMD5ForString("test")); System.out.println(generateMD5ForFile(new File("1.jpg"))); } //获得字符串的md5值 public static String generateMD5ForString(String str){ //更新摘要数据 md.update(str.getBytes()); //生成摘要数组 byte[] digest = md.digest(); //清空摘要数据,以便下次使用 md.reset(); return formatByteArrayTOString(digest); } //获得文件的md5值 public static String generateMD5ForFile(File file) throws IOException { //创建文件输入流 FileInputStream fis = new FileInputStream(file); //将文件中的数据写入md对象 byte[] buffer = new byte[1024]; int len=-1; while ((len = fis.read(buffer)) != -1) { md.update(buffer, 0, len); } fis.close(); //生成摘要数组 byte[] digest = md.digest(); //清空摘要数据,以便下次使用 md.reset(); return formatByteArrayTOString(digest); } //将摘要字节数组转换为md5值 public static String formatByteArrayTOString(byte[] digest) { //创建sb用于保存md5值 StringBuffer sb = new StringBuffer(); int temp; for (int i=0; i


    推荐阅读