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

跨境TRS投资操作指南与系统解决方案

3 点击【申请 TRS 账户】,查看风险披露,录入账户参数、确定录入的参数信息,进行身份验证,输入验证码,TRS 账户开户申请已提交,后台对已提交的 TRS 开户申请进行审核,审核成功后,短信邮箱提醒,进行登录;2.点击【申请TRS账户】,查看风险披露,录入账户参数、确定录入的参数信息,进行身份验证,输入验证码,TRS账户开户申请已提交,后台对已提交的TRS开户申请进行审核,审核成功后,短信邮箱提醒,进行登录;4)更广泛的投资选择:相比A股通,TRS可以交易更多的A股标的,提供了更广泛的投资选择。

2401_85487119的博客 2852

java 文件上传时生成hash

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

weixin_42060173的博客 363

手把手教你用Simulink搭建级联H桥储能变流器仿真模型(附SOC均衡分析)

本文详细介绍了如何使用Simulink搭建级联H桥储能变流器仿真模型,并附有SOC均衡分析。从仿真环境准备、单相H桥单元建模到多模块级联方案和SOC均衡策略实现,逐步指导读者完成复杂系统的构建与优化。通过关键仿真结果分析和工程实践问题排查,帮助读者掌握级联H桥储能变流器的核心技术与应用方法。

weixin_42524226的博客 445

用Quartus II和LPM_ROM手把手复现西电计组课设:从微指令到五条指令的完整流程

本文详细介绍了使用Quartus II和LPM_ROM复现西电计组课设的完整流程,从微指令编写到五条指令的实现。通过环境搭建、LPM_ROM配置、微程序设计及调试技巧,帮助读者高效完成课程设计,避开常见问题。适合计组课程设计的学习者和实践者参考。

weixin_29288313的博客 456

Hash值生成java算法

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

weixin_38081382的博客 1484

AI内容安全机制解析:从破甲现象看模型防护与合规边界

AI内容安全机制是保障人工智能模型合规应用的核心技术,其原理基于多层防护体系。通过意图识别、关键词过滤和多模态检测等技术,系统能够实时监控用户输入和模型输出,有效拦截违规内容。这种机制的技术价值在于平衡模型创造力与内容安全性,确保AI生成内容符合伦理规范。在应用场景上,内容安全机制广泛应用于聊天机器人、内容创作平台和企业级AI系统,防止色情、暴力等有害信息的传播。随着破甲等绕过手法的出现,安全机制需要持续进化以应对指令混淆、上下文污染等新型挑战。本文从技术攻防角度深入分析AI内容安全的实现原理与发展趋势,为

1090

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

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

wsuyixing的博客 4992

COMSOL模拟CO2驱替CH4:多物理场耦合建模与工程应用详解

在非常规天然气开发与碳封存工程中,多孔介质内的渗流、吸附与岩石变形相互耦合,使得CO2驱替CH4的产能预测和CO2封存评估无法仅靠经验公式完成。以达西定律描述裂隙流动、以扩展Langmuir方程刻画竞争吸附、用应力-吸附-渗透率关系关联煤岩变形,是多物理场耦合数值模拟的核心路径。COMSOL Multiphysics凭借内置渗流、固体力学与组分传递接口,能够将这些机制整合为可参数化扫描的仿真模型,为注气压力、井距、渗透率演化等方案设计提供量化依据。围绕CO2驱替CH4模拟的建模流程、参数取法与结果判读,可形

weixin_29574585的博客 162

【Unity实战100例】Unity循环UI界面切换卡片功能

功能包括:可以设置半径,高度,速度,元素数量用户可以根据自己的实际需求接入 制作思路:创建每个元素对应的虚拟点,通过旋转管理这些虚拟点,然后把旋转信息和位置信息同步给实际的元素

纯技术流日常开发商业开发记录总结等 7717

用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

【思考模型框架】采用双钻模型:发散(桌面研究/用户访谈)→收敛(需求归类/优先级排序),输出需求规格书、追踪矩阵及产品待办清单。

设计思维双钻模型是一种以用户为中心的需求管理方法,通过"发散-收敛"的双循环确保问题定位准确、方案切实可行。第一钻石(探索→定义)聚焦"找对问题",运用用户访谈、田野调查等方法挖掘真实需求;第二钻石(开发→交付)解决"做对方案",通过原型测试、A/B测试验证可行性。该模型强调低保真验证、多团队协作和真实用户测试,避免资源浪费与伪需求开发。典型应用场景包括产品功能优化、用户体验提升等需要精准落地的需求场景。核心价值在于建立从用户痛点到解决方案的可控闭

奶爸的编程之路,也就一周冷个三天 319

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万+

高分六号WFV预处理详细步骤(辐射校正、大气校正、几何校正)

高分六号WFV传感器获得的影像的预处理分为两个步骤:辐射校正和大气校正,辐射校正为了消除传感器的自身误差,大气校正为了消除大气的折射误差。 一、辐射校正 按照红框中信息进行更改。 辐射校正前地物光谱反射率: 校正后的地物光谱曲线的变化: 二、大气校正 ENVI中大气校正一般采用Flaash模型,但是这个模型需要设置许多的参数十分的麻烦,所以采用ENVI商店(app store,这个也需要下载的)里的Flaash Easy To Use 这个插件,可以快速地进行大气校正。 大气校正后的地物反射率 这

qq_41828818的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Java 求 图片的hash值

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

weixin_36491727的博客 351

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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、付费专栏及课程。

余额充值