Java 获取文件的md5
2014-06-18 20:10
411 查看
public static String getMd5ByFile(File file) { String value = null; try { FileInputStream in = new FileInputStream(file); MappedByteBuffer byteBuffer = in.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length()); MessageDigest md5 = MessageDigest.getInstance("MD5"); md5.update(byteBuffer); BigInteger bi = new BigInteger(1, md5.digest()); value = bi.toString(16); //value.toUpperCase();将英文全部转化为大写 if (in != null) { in.close(); byteBuffer.clear(); } } catch (Exception e) { e.printStackTrace(); } return value; }
开始用的上述方法,基本能够正常使用,但是久了就发现一个问题,BigInteger bi = new BigInteger(1, md5.digest());
若md5值开头为数字 0 的话,转换后会丢掉0,得到的是一个31位的md5值,网上找了另一种方法,不过太复杂了,整理了下,解决了上述问题
public static String getFileMD5String(File file){ StringBuffer stringbuffer=null; try { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6','7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; FileInputStream in = new FileInputStream(file); FileChannel ch = in.getChannel(); MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0,file.length()); MessageDigest messagedigest = MessageDigest.getInstance("MD5"); messagedigest.update(byteBuffer); byte[] bytes=messagedigest.digest(); int n=bytes.length; stringbuffer = new StringBuffer(2 * n); for (int l = 0; l < n; l++) { byte bt=bytes[l]; char c0 = hexDigits[(bt & 0xf0) >> 4]; char c1 = hexDigits[bt & 0xf]; stringbuffer.append(c0); stringbuffer.append(c1); } } catch (Exception e) { e.printStackTrace(); } return stringbuffer.toString(); }
相关文章推荐
- Java利用MessageDigest获取字符串或文件MD5详解
- Java利用MessageDigest获取字符串或文件MD5详解
- java获取大文件的MD5、SHA1,CRC32码
- Java利用MessageDigest获取字符串或文件MD5详解
- Java利用MessageDigest获取字符串或文件MD5详解
- Java利用MessageDigest获取字符串或文件MD5详解
- Java利用MessageDigest获取字符串或文件MD5详解
- Java实现获取文件MD5
- 加密:Java利用MessageDigest获取字符串或文件MD5详解
- 获取文件的md5(java & php)
- Java中对图片文件的类型的获取
- [Java] 利用xpdf库获取pdf文件的指定范围文本内容
- 怎样在JAVA文件中获取该项目的相对路径
- 转帖--在JAVA文件中获取该项目的相对路径
- 在JAVA文件中获取该项目的相对路径
- 在JAVA文件中获取该项目的相对路径
- Java中对图片文件的类型的获取
- 在JAVA文件中获取该项目的相对路径
- 在JAVA文件中获取该项目的相对路径
- poi读取文件,并获取相应属性 (java操作Excel文件)