import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.log4j.Logger; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; /**
* md5算法工具
*/
public class MD5BigFileUtil {
private final static Logger logger = Logger.getLogger(MD5BigFileUtil.class);
static MessageDigest md = null; static {
try {
md = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException ne) {
logger.error("NoSuchAlgorithmException: md5", ne);
}
} /**
* 对一个文件求他的md5值
* @param f 要求md5值的文件
* @return md5串
*/
public static String md5(File f) {
FileInputStream fis = null;
try {
fis = new FileInputStream(f);
//100KB each time
byte[] buffer = new byte[102400];
int length;
long loopCount = 0;
while ((length = fis.read(buffer)) != -1) {
md.update(buffer, 0, length);
loopCount++;
} logger.debug("read file to buffer loopCount:"+loopCount); return new String(Hex.encodeHex(md.digest()));
} catch (FileNotFoundException e) {
logger.error("md5 file " + f.getAbsolutePath() + " failed:" + e.getMessage());
return null;
} catch (IOException e) {
logger.error("md5 file " + f.getAbsolutePath() + " failed:" + e.getMessage());
return null;
} finally {
try {
if (fis != null) fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} /**
* 求一个字符串的md5值
* @param target 字符串
* @return md5 value
*/
public static String md5(String target) {
return DigestUtils.md5Hex(target);
} public static void main(String[] args) {
long begin =System.currentTimeMillis();
System.out.println(md5(new File("G:/BT/PremierePro_6_LS7.7z")));
long end =System.currentTimeMillis();
System.out.println("time:"+((end-begin)/1000)+"s"); System.out.println(md5("hello world"));
} }

java 文件md5+字符串md5 实现的更多相关文章

  1. Java 文件完整性校验 MD5 sha1 sha256 sha224 sha384 sha512

    由于项目中需要使用文件做备份,并且要提供备份文件的下载功能.备份文件体积较大,为确保下载后的文件与原文件一致,需要提供文件完整性校验. 网上有这么多此类文章,其中不少使用到了 org.apache.c ...

  2. MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能

    MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...

  3. java生成字符串md5函数类(javaSE)

    //实现生成MD5值 import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.B ...

  4. Android初级教程:对文件和字符串进行MD5加密工具类

    转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/52200008   点击打开链接 之前写过一篇博文,是针对字符串进行md5加密的.今 ...

  5. 【jar】JDK将单个的java文件打包为jar包,并引用到项目中使用【MD5加密】

    ==================================================================================================== ...

  6. C#获取文件MD5字符串

    备注 哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串.加密哈希函数有这样一个属性:在计算不大可能找到散列为相同的值的两个不同的输入:也就是说,两组数据的哈希值仅在对应的数据也匹配时才 ...

  7. 【转】Java生成对应字符串的MD5密码模块

    原文网址:http://www.cnblogs.com/xudong-bupt/archive/2013/05/10/3070899.html (1)一般使用的数据库中都会保存用户名和密码,其中密码不 ...

  8. MD5算法【计算文件和字符串的MD5值】

    1. MD5算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错).任何长度的任意内容都可以用MD5计算出散列值.MD5的前身:MD2.MD3.MD4.介绍工具:CalcMD5 ...

  9. DSAPI 字符串和文件转Md5字符串

    方法列表: 字符串转MD5字符串(ByVal 要转换的字符串 As String, Optional 转换格式 As MD5格式 = MD5格式.小写32位) As String 文件转MD5字符串( ...

随机推荐

  1. 在CentOS 7 上搭建LAMP

    导读 要求:httpd的动态和静态资源分为两台主机提供,mysql也用单独一台主机.httpd服务提供虚拟主机,一个虚拟主机用于提供phpMyAdmin:另一个虚拟主机用于提供wordpress.安装 ...

  2. unity3d 参考坐标系

    原地址:http://www.cnblogs.com/88999660/archive/2013/04/01/2993844.html 参考坐标系(Reference Coordinate Syste ...

  3. FATAL: ActionView::Template::Error (application.css isn't precompiled):

    iwangzheng.com tty:[0] jobs:[0] cwd:[/opt/logs/m]13:02 [root@a02.cmsapi$ tail thin\ server\ \(0.0.0. ...

  4. HDU1711

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. JS 自定义正则表达式

    1. 正则表达式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的 ...

  6. CF#310 d2

    A:|c[1]-c[0]| B:A+-(oc)A[0]==0..n-1 C: #include <cstdio> int n,m,i,j,k,p; int ll,ca,cb,cc; int ...

  7. swfit 中的类型属性说明

    swift 中不叫做类属性,叫类型属性,因为在swift中,struct 和enum也是可以有这种属性的,叫类属性明显不准. 有以下注意事项: 对于值类型(指结构体和枚举)可以定义存储型和计算型类型属 ...

  8. git revert 用法

    git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交    * git revert HEAD                ...

  9. glut编译问题 (程序无法运行)

    参考:http://blog.csdn.net/robinjwong/article/details/5636049 error: the procedure entry point _glutini ...

  10. 【转载】C++ 值传递、指针传递、引用传递详解

    原文链接:http://www.cnblogs.com/yanlingyin/ 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形 ...