123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package com.yihu.ehr.util.encrypt;
- import com.yihu.ehr.util.encode.HexEncode;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.lang.reflect.Method;
- import java.nio.MappedByteBuffer;
- import java.nio.channels.FileChannel;
- import java.security.AccessController;
- import java.security.MessageDigest;
- import java.security.PrivilegedAction;
- /**
- * @created Air 2015/6/2.
- */
- public class MD5 {
- static public String hash(String str) throws Exception {
- MessageDigest messageDigest = null;
- messageDigest = MessageDigest.getInstance("MD5");
- messageDigest.reset();
- messageDigest.update(str.getBytes());
- return HexEncode.toHexString(messageDigest.digest());
- }
- public static String getMd5ByFile(File file) throws FileNotFoundException {
- String value = null;
- FileInputStream in = new FileInputStream(file);
- MappedByteBuffer byteBuffer =null;
- try {
- 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= HexEncode.toHexString(md5.digest());
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if(null != in) {
- try {
- in.close();
- clean(byteBuffer);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- return value;
- }
- public static void clean(final Object buffer) throws Exception {
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- try {
- Method getCleanerMethod = buffer.getClass().getMethod("cleaner", new Class[0]);
- getCleanerMethod.setAccessible(true);
- sun.misc.Cleaner cleaner = (sun.misc.Cleaner) getCleanerMethod.invoke(buffer, new Object[0]);
- cleaner.clean();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- });
- }
- }
|