Java生成文件hash值

求文件的MD5算法 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。 阅读详情

Java生成文件hash值(通过传入file或者InputStream)


package com.hczy.syncdata.common.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigInteger;
import java.security.MessageDigest;

public class FileHahUtil {

	 /**
     * 计算文件hash值
     */
    public static String hashFile(File file) throws Exception {
        FileInputStream fis = null;
        String sha256 = null;
        try {
            fis = new FileInputStream(file);
            MessageDigest md = MessageDigest.getInstance("SHA-256");
            byte buffer[] = new byte[1024];
            int length = -1;
            while ((length = fis.read(buffer, 0, 1024)) != -1) {
                md.update(buffer, 0, length);
            }
            byte[] digest = md.digest();
            sha256 = byte2hexLower(digest);
        } catch (Exception e) {
            e.printStackTrace();
            throw new Exception("计算文件hash值错误");
        } finally {
            try {
                if (fis != null) {
                    fis.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sha256;
    }
 
    private static String byte2hexLower(byte[] b) {
        String hs = "";
        String stmp = "";
        for (int i = 0; i < b.length; i++) {
            stmp = Integer.toHexString(b[i] & 0XFF);
            if (stmp.length() == 1) {
                hs = hs + "0" + stmp;
            } else {
                hs = hs + stmp;
            }
        }
        return hs;
    }
    
    public static String md5HashCode(InputStream fis) {  
        try {  
        	//拿到一个MD5转换器,如果想使用SHA-1或SHA-256,则传入SHA-1,SHA-256  
            MessageDigest md = MessageDigest.getInstance("MD5"); 
            
            //分多次将一个文件读入,对于大型文件而言,比较推荐这种方式,占用内存比较少。
            byte[] buffer = new byte[1024];  
            int length = -1;  
            while ((length = fis.read(buffer, 0, 1024)) != -1) {  
                md.update(buffer, 0, length);  
            }  
            fis.close();
            //转换并返回包含16个元素字节数组,返回数值范围为-128到127
  			byte[] md5Bytes  = md.digest();
            BigInteger bigInt = new BigInteger(1, md5Bytes);//1代表绝对值 
            return bigInt.toString(16);//转换为16进制
        } catch (Exception e) {  
            e.printStackTrace();  
            return "";  
        }  
    } 
    
    
    public static void main(String[] args) {
		
    	try {
    		File file = new File("D:\\file\\practice\\Downloads.rar");
    		File file1 = new File("D:\\file\\practice\\into\\Downloads.rar");
    		File file2 = new File("D:\\file\\practice\\into\\Downloads(1).rar");
//    		System.out.println(md5HashCode(new FileInputStream(file)));
//    		System.out.println(md5HashCode(new FileInputStream(file)).equals(md5HashCode(new FileInputStream(file))) );
//    		System.out.println(hashFile(file));
//			System.out.println(hashFile(file).equals(hashFile(file1)));
//			System.out.println(hashFile(file).equals(hashFile(file2)));
			File file3 = new File("D:\\file\\practice\\into\\Google.rar");
			String md5HashCode = FileHahUtil.md5HashCode(new FileInputStream(file));
			System.out.println(md5HashCode);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}




知是行之始,行是知之成

别找了,Java生成MD5值直接用轮子就好了 Java计算MD5值,以及计算文件夹MD5值的思路与实现 阅读详情

相关推荐

Java实现根据文件哈希值和文件大小,删除重复文件

微信接收的文件里,经常会有重复文件,时间久了非常占用磁盘空间。然后自己手动去找出重复文件并删除太麻烦了,所以还是自己写个工具来帮我们做这件事。代码也很简单,主要就是要获取文件的哈希值了。

weixin_43165220的博客 632

Java获取文件的hash值(SHA256)

在工作开发当中需求要通过文件的hash值比对文件是否被篡改过,于是通过使用了(sha256)hash值进行比对,因为对于任意长度的消息,SHA256都会产生一个256bit长的哈希值,通常用一个长度为64的十六进制字符串来表示。

筱白爱学习!的博客 8063

【CarMaker实战指南】从零构建环形测试场景与车辆连续仿真

本文详细介绍了如何使用CarMaker软件从零构建环形测试场景与实现车辆连续仿真。通过分步指导搭建闭环道路、连接交叉路口、规划车辆轨迹等核心操作,帮助用户掌握CarMaker的基础应用技巧,并提供了常见问题排查与进阶优化建议,适用于车辆耐久性测试和自动驾驶算法验证等场景。

weixin_29274969的博客 234

java 文件上传时生成hash

一:概述上传时生成Hash值的实践方法 在处理文件上传时,生成文件的Hash值是一个常见的需求。Hash值可以用于验证文件的完整性、去重、快速比较等场景。本文将介绍几种在Java中生成文件Hash值的方法,并提供实际案例。 ## 文件Hash概述 Hash值是通过散列算法对数据进行计算得到的结果。常见的散列算法有MD5、S...

weixin_42060173的博客 363

Calpuff模型实战:从气象数据预处理到污染物扩散模拟全流程指南

本文提供了一份详尽的Calpuff模型实战指南,涵盖从气象数据预处理、地形处理到污染物扩散模拟与结果可视化的全流程。重点解析了Calmet气象场构建、Calpuff核心参数配置,并与AERMOD模型进行对比,帮助环境工程师与科研人员掌握这一强大的三维非稳态拉格朗日扩散模型,以应对复杂地形、海岸熏烟等实际模拟挑战。

s4t5u6v7的博客 458

TBOX(Telematics Box)在智能网联汽车中的核心功能与应用场景解析

TBOX(Telematics Box)是智能网联汽车的“中枢神经”,基于Android或Linux操作系统,并通过CAN总线与车辆深度交互。它实现了远程控制、车辆状态监控、OTA升级及紧急呼叫(E-CALL)等核心功能,是提升用车安全、便利性与实现车辆持续进化的关键技术组件。

weixin_29158413的博客 804

Hash值生成java算法

java加密算法hash值生成,了解到的三种方式java代码Utils: 2.SHA:安全散列算法 java代码Utils: 3.HMAC:散列消息鉴别码 java代码Utils

weixin_38081382的博客 1484

Claude Code 完整使用教程(2026最新版)

《Claude Code 完整使用教程(2026最新版)》摘要: Claude Code 是 Anthropic 公司推出的智能编程工具,通过自然语言对话实现代码编写、调试和重构。本教程基于 v2.1.101 版本,涵盖安装配置、核心功能及最新特性。主要内容包括: 多平台安装方式(macOS/Linux/Windows) 桌面应用专属功能如并行会话、定时任务和语音模式 模型选择指南(Sonnet/Opus/Haiku) 快速入门示例:5分钟创建Node.js项目 核心功能:代码读写、命令执行、Git集成等

程序猿_三产 2万+

使用操作系统自带hash工具生成文件hash值

使用windows、linux自带hash工具为文件生产hash值(本处仅介绍生产md5、sha1值方式)

wsuyixing的博客 4992

硬件工程师的蜗牛成长路

1、《模拟电路课程》R/L/C/继电器/光耦/二极管/三极管/MOS管磁珠/ESD/TVS/肖特基二极管/稳压二极管/保险丝/GDT/TSS/光耦/MOS/运放/BJT比较器/面板开关/按键开关/拨码开关/BUCK/LDO/电源防护器件LM5069单输出PLL/多路输出PLL/单端晶振/差分晶振/晶体(这方面不熟悉,待以后补充)1)速度传感器2)温度传感器3)倾斜角传感器4)火焰传感器5)红外传感器6)呼吸心跳采集chaunganqi1)数字隔离 电平转换芯片/磁隔离/专用隔离芯片。

caozhaokun的博客 1979

微信聊天记录丢失原因与恢复方案详解

SQLite数据库作为移动应用常见的本地存储方案,其加密机制和存储结构直接影响数据安全性。以微信为例,聊天记录存储在EnMicroMsg.db等SQLite文件中,采用AES加密保护。当手机清理工具误删这些文件时,会导致特定时间段记录丢失。理解数据恢复原理需要掌握文件系统删除机制和闪存特性,其中关键点包括TRIM指令的影响和数据块覆盖风险。通过专业工具如DiskDigger或iMyFone D-Back,配合ADB调试和SQLite数据重组技术,可在黄金时间窗口内恢复记录。日常维护建议结合自动化备份方案和存

weixin_32612263的博客 386

用Hash算法对密码进行散列,以及获取Salt的工具类

一、HashUtils(“MD5” / “SHA1”) public static String getMD5( String str ) { return hash( str, "MD5" ); } public static String getMD5( File file ) { return hash( file, "MD5" ); } public static S...

Satsuki.Cyan的博客 567

YOLOv8 ultralytics使用笔记----labelme标记数据,训练模型、追踪目标。

Ultralytics是一个Python库,它是为执行高级计算机视觉任务而创建的,如对象检测、实例分割、图像分类等。Ultralytics为YOLO模型发布了一个全新的存储库,它被构建为用于机器视觉统一框架。这里先利用,并激活。

qq_48050838的博客 1万+

JAVA File类的hashCode()和计算文件hash值的区别

File类的hashCode()只是Computes a hash code for this abstractpathname。 即计算文件的相对路径,如: "F:\\TMLab\\baiduwenku\\待下载的文档\\download_list0.txt"的hash值,并不是文件本身的hash值。 测试代码: String filePath = "F:\\TMLab\\baidu

yuhentian的专栏 1万+

芒果YOLOv5改进107:ARConv自适应旋转卷积,全网首发 | 即插即用:以增强其表征能力,从而准确检测方向物体,ICCV顶会论文idea

ARConv自适应旋转卷积,全网首发 | 即插即用:以增强其表征能力,从而准确检测方向物体,ICCV顶会论文idea

包括YOLOv5、YOLOv7、YOLOv8等模型改进 956

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java 字符串 哈希值_Java 获取字符串Hash值

Java 生成字符串的Hash值:/*** A hashing method that changes a string (like a URL) into a hash suitable for using as a* disk filename.*/public static String hashKeyForDisk(String key) {String cacheKey;try {fin...

weixin_39820437的博客 3257

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java 求 图片的hash值

Java 求图片的 Hash 值 在计算机科学中,Hash 函数是一种将任意长度的输入(如文件、文本或图像)转换为固定大小的输出(通常是一个数值或字符串)的函数。生成 Hash 值有助于比较数据完整性、数据唯一性和高效获取数据。本文将介绍如何在 Java 中计算图片的 Hash 值,并用代码示例演示这一过程。 Hash 值...

weixin_36491727的博客 351

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java文件上传中的Hash生成:确保数据完整性与安全性

本文详细介绍了如何在Java中实现文件上传时生成Hash值,并提供了详细的代码案例和运行结果。通过生成文件的Hash值,可以确保文件在上传过程中的完整性和安全性。在实际应用中,可以根据需求选择不同的Hash算法,并结合其他安全措施(如数字签名、加密等)来进一步增强系统的安全性。

Web安全工具库 856

[J2SE]Java SE Security初探 -- Hash值

文件Hash值生成 [code="java"] public class HashUtils { /** * 文件SHA-1 Hash值生成器 * * @param in * @return * @throws Exception */ public static String generateFileSHA1(String fileUrl) ...

小野工作室 204

[转载]添加HIDL接口hash值(解VTS问题)

https://www.pianshen.com/article/43881363844/ 添加HIDL接口的hash值得: 若遇到如下VTS测试报告中的错误,需要自己添加接口hash值到current.txt中: 使用二进制工具hidl-gen,执行如下命令即可: 将输出的内容放入到软件包根目录中的current.txt文件中即可。 具体步骤: 1.在软件包中找到需要生成hash接口的hidl位置:   2. 打开HIDL接口同级目录下的Android.bp文件: &n

刚刚好的博客 1311

java大写md5_Java实现MD5(32/16位)大小写加密

MD5简单介绍大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件名做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。MD5还广泛用于操作系统的登陆认证上,如Unix、各类BSD系统登录密码、数字签名等诸多方。如在UNIX系统中用户的...

weixin_35871890的博客 633

java MD5 32位加密

MD5简单介绍 大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件名做了任何改动,其MD5值也就是对应的“数字指纹”就会发生变化。 MD5可以解密吗? MD5加密原理是散列算法,散列算法也称哈希算法。 比如10除以3余数为一,4除以3余数也为一,但余数为一的就不知道这个数是哪个了。 所以md5不能解密。也是为什么扣扣密码只能重置,不能找回的原因。

风水道人 5465

java快速生成大文件的MD5算法

import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.security.MessageDigest; impor...

androider的专栏 421

Java:基于MD5的文件监听程序

前述和需求说明   和之前写的Python:基于MD5的文件监听程序是同样的功能,就不啰嗦了,就是又写了一个java版本的,可以移步 python 版本去看一下,整个的核心思路是一样的。代码已上传Github 类说明   FileMd5.java 利用md5生成文件hash值  fileWalk.java 只是一个文件遍历的demo,没有被其他类调用  myFileLis...

weixin_30808575的博客 134

java读取zip的md5,zip文件的MD5哈希

Is it possible to generate MD5 hash for .zip files in java? All the examples I found were for .txt files.I want to know when we unzip the data, edit a file, again zip it and find the hash, will it be ...

weixin_36222664的博客 532
上一篇: Java生成UUID方式
下一篇: Java获取/检验IP
猿来如此~~
博客等级 码龄7年 4500粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值