文档章节

Java获取文件SHA1、MD5、CRC32

胖子没烦恼
 胖子没烦恼
发布于 2016/11/21 18:33
字数 245
阅读 182
收藏 2

获取文件的SHA1值

public String getFileSHA1(File file) {
		MessageDigest md = null;
		FileInputStream fis = null;
		StringBuilder sha1Str = new StringBuilder();
		try {
			fis = new FileInputStream(file);
			MappedByteBuffer mbb = fis.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length());
			md = MessageDigest.getInstance("SHA-1");
			md.update(mbb);
			byte[] digest = md.digest();
			String shaHex = "";
			for (int i = 0; i < digest.length; i++) {
				shaHex = Integer.toHexString(digest[i] & 0xFF);
				if (shaHex.length() < 2) {
					sha1Str.append(0);
				}
				sha1Str.append(shaHex);
			}
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (fis != null) {
				try {
					fis.close();
				} catch (IOException e) {
				}
			}
		}
		return sha1Str.toString();
	}

获取文件的MD5值

public static String getFileMd5(File file) {
		String md5Str = null;
		FileInputStream fis = null;
		try {
			fis = new FileInputStream(file);
			MappedByteBuffer mbb = fis.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length());

			MessageDigest md5 = MessageDigest.getInstance("MD5");
			md5.update(mbb);

			BigInteger bi = new BigInteger(1, md5.digest());
			md5Str = bi.toString(16);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} finally {
			if (fis != null) {
				try {
					fis.close();
				} catch (IOException e) {
				}
			}
		}

		return md5Str;
	}

获取文件的 CRC32值

public String getFileCRC32(File file) {
		FileInputStream is = null;
		CheckedInputStream ckis = null;
		String crc32Str = null;

		try {
			CRC32 crc32 = new CRC32();
			is = new FileInputStream(file);

			ckis = new CheckedInputStream(is, crc32);

			byte[] buffer = new byte[1024];

			while ((ckis.read(buffer)) != -1) {
			}
			crc32Str = Long.toHexString(crc32.getValue());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (is != null) {
				try {
					is.close();
				} catch (IOException e) {
				}
			}
			if (ckis != null) {
				try {
					ckis.close();
				} catch (IOException e) {
				}
			}
		}
		return crc32Str;
	}

 

© 著作权归作者所有

共有 人打赏支持
胖子没烦恼
粉丝 1
博文 5
码字总数 868
作品 0
南京
私信 提问
java 计算文件MD5值 大文件

MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性。用术语讲,MD5是一种消息摘要算法(Message Digest Algorithm)。另外还有一种常用的消息摘要算法SHA1。如果想了解这些的话,可...

laigous
2013/01/31
0
2
maven私服nexus之校验和(checksums)

maven是开源的项目构建工具。 nexus可以用来搭建maven私服。 checksum(校验和):用于校验数据的完整性和准确性。 maven nexus中可以查看构件的Checksums:SHA1 checksum和MD5 checksum。 ...

donhui
2014/10/10
0
0
JRuby 1.6 RC1 发布,高度兼容 Ruby 1.9.2

JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。Rails彻底加快及简化了Web应用的开发,不过它让人觉得不...

红薯
2011/01/13
676
0
Java利用MessageDigest获取字符串或文件MD5详解

MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性。用术语讲,MD5是一种消息摘要算法(Message Digest Algorithm)。另外还有一种常用的消息摘要算法SHA1。如果想了解这些的话,可...

神勇小白鼠
2013/09/07
0
0
Apache POI 3.15,Office 文档的 Java 处理包

Apache POI 3.15 发布了,Apache POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。目前POI已经有了Ruby版本。这次更新包括一批功能性领域和bug修复。 点击查看完整更新列表、发...

淡漠悠然
2016/09/22
5K
4

没有更多内容

加载失败,请刷新页面

加载更多

全面理解Java内存模型(JMM)及volatile关键字

理解Java内存区域与Java内存模型 Java内存区域 Java虚拟机在运行程序时会把其自动管理的内存划分为以上几个区域,每个区域都有的用途以及创建销毁的时机,其中蓝色部分代表的是所有线程共享的...

亭子happy
20分钟前
1
0
Prometheus监控mysql实例--centos7安装mysql_exporter

目录 概述 环境准备 普罗米修斯简介 mysql安装 mysqld_exporter安装 启动参数列表 概述 prometheus(普罗米修斯) 是一个开源系统监控和报警工具包,许多公司和组织都采用了Prometheus,该项目...

java_龙
25分钟前
3
0
拥有2000家门店,他如何晋升为服装界的新宠?

摘要: —— iwarm3.0加热组件、碳纳米管膜炎、管状石墨结构体...你看到并不是一款高科技电子产品,这是快鱼服饰在这个冬天推出的黑科技产品 - 智能温控羽绒服。 在竞争激烈的服装行业,快鱼...

阿里云云栖社区
27分钟前
2
0
不忘初心 砥砺前行-智和信通2018年年会报道

1月18日,智和信通以“不忘初心 砥砺前行”为主题的2018总结会议暨2019年年会在京召开。年会以总经理李少龙的讲话为开场,充分肯定了全体员工2018年的工作和成绩,并表达了公司产品智和网管平...

智和网管平台
36分钟前
1
0
NGINX api网关

以谁为师
37分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部