对文件做MD5摘要

什么叫MD5,MD5通常做什么用处 这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: 【return的用法是什么?若在for循环中,还会执行下一次循环吗?】 【修真院java小课堂】什么叫MD5,MD5通常做什么用处,为什么MD5不可逆,用做密码加密的时候仍然可能会被解密? 大家... 阅读详情

package transferterminate.business.util;

import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

 

/**
 * <li>Title: IntegralityUtil.java</li>
 * <li>Project: transferterminate</li>
 * <li>Package:transferterminate.business.util</li>
 * <li>Description: 摘要应用类</li>
 * <li>Copyright: Copyright (c) 2009</li>
 * <li>Company: IdealTechnologies </li>
 * <li>Created on May 8, 2009 8:23:38 AM</li>
 *
 * @author chun_chang
 * @version 1.0
 *
 */
public class IntegralityUtil {

 private static MessageDigest alg;
 private static int length;
 private static int maxBytesReadPerTime = 8192;

 static {
  try {
   alg = MessageDigest.getInstance("MD5");
   length = alg.getDigestLength();// 默认长度是16
  } catch (NoSuchAlgorithmException e) {
   e.printStackTrace();
  }
 }

 /**
  * 获取文件内容的MD5摘要
  * @param is:InputStream 源文件输入流
  * @param fileLength:long 源文件长度
  * @return byte[] 信息摘要
  * @throws IDTException
  */
 public static byte[] getMD5(InputStream is, long fileLength) throws Exception {

  byte[] bytes = new byte[maxBytesReadPerTime];
  int bytesRead = 0;
  int maxReadTimesBeforeRedigest = 100;//每100块做一次摘要
  byte[] digestOfPart = new byte[length];
  byte[] digest = new byte[length * maxReadTimesBeforeRedigest];
  int timesRead = 0;
  byte[] digestToReturn = new byte[length];

  try {
   while (fileLength > 0) {
    bytesRead = is.read(bytes);
    digestOfPart = getMD5(bytes, 0, bytesRead);
    System.arraycopy(digestOfPart, 0, digest, timesRead * length, length);
    timesRead++;
    if (timesRead == maxReadTimesBeforeRedigest) {
     digestOfPart = getMD5(digest, 0, digest.length);
     System.arraycopy(digestOfPart, 0, digest, 0, length);
     timesRead = 1;
    }
    fileLength = fileLength - bytesRead;
   }
   
   if (timesRead > 1) {
    digestOfPart = getMD5(digest, 0, timesRead * length);
    System.arraycopy(digestOfPart, 0, digestToReturn, 0, length);
   } else {
    System.arraycopy(digest, 0, digestToReturn, 0, length);
   }
   
   if (is != null) {
    is.close();
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
  return digestToReturn;
 }

 /**
  * 获取MD5信息摘要
  * @param in:byte[] 源数据
  * @return byte[] 信息摘要
  * @throws Exception
  */
 public static byte[] getMD5(final byte[] in) {
  alg.update(in);
  return alg.digest();
 }

 /**
  * 获取MD5信息摘要
  * @param in:byte[] 源数据
  * @param from:int 起始字节
  * @param len:int 长度
  * @return byte[] 信息摘要
  * @throws Exception
  */
 public static byte[] getMD5(final byte[] in, int from, int len) {
  alg.update(in, from, len);
  return alg.digest();
 }

 /**
  * 获取摘要长度
  * @return int 摘要长度
  */
 public static int getDigestLength() {
  return length;
 }

 /**
  * 设置每次读文件最大长度
  * @param maxBytesReadPerTime
  */
 public static void setMaxBytesReadPerTime(int maxBytesReadPerTime) {
  IntegralityUtil.maxBytesReadPerTime = maxBytesReadPerTime;
 }
}

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

相关推荐

MD5信息摘要算法原理及破解原理

虽然目前MD5已经宣布可破解了,但是其算法思想还是可以学习的。 MD5应用 1.一致性验证 典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在Unix下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如: MD5 (tanajiya.tar.gz) = 38b8c2...

Jae_Peng的博客 5706

django实现文件上传,并计算md5值,把md5值作为文件名

加密函数 import hashlib from functools import partial def md5(data, block_size=65536): # 创建md5对象 m = hashlib.md5() # 对django中的文件对象进行迭代 for item in iter(partial(data.read, block_size), b''...

一个小白的求知路 1544

前端开发:MD5加密的使用

在前端开发过程中,关于前后端数据传输的时候的安全考量也是很有必要的,尤其是涉及到一些验证、确认、支付、数据安全传输等敏感信息传递的场景。作为软件开发人员对于MD5加密并不陌生,因为在平时开发过程中多少都会涉及到数据加密的需求。前端实际使用场景中关于MD5加密主要是在网页加密的时候,主要是为了验证数据的完整性,确保数据在传输过程中不被篡改。那么本篇博文就来分享一下在前端开发过程中使用MD5加密,总结记录一下,方便查阅使用。

全沾软贱开发攻城狮 1万+

消息摘要算法:MD5加密

今天,我们将深入探讨一种经典且广泛应用的加密算法——MD5。通过案例形式了解其原理、实现方法及注意细节。无论你是Python爱好者还是JavaScript高手,这篇内容都将为你揭开MD5的神秘面纱。MD5(Message-Digest Algorithm 5)是一种常见的哈希函数,主要用于生成消息摘要,以确保信息的完整性。尽管其已被认为不够安全,但在某些非安全性要求极高的场景中仍有应用。本文将通过Python和JavaScript实现MD5加密,深入理解其工作原理和使用细节。

switch616的博客 806

SHA1或MD5算法获取文件摘要值(JAVA)

SHA1或MD5算法获取文件摘要值(JAVA)

文件摘要

NULL 博文链接:https://andilyliao.iteye.com/blog/600126

如何使用vue计算文件的md5哈希值

选择文件:

weixin_44401744的博客 1564

信息-摘要算法5(MD5)Java实现

MD5主要是通过特定的hash散列方法将文本信息转换成简短的信息摘要,用以验证信息的完整性。一般用于数字签名。 用Java实现的一个例子。

前端大文件分块上传及计算大文件MD5值

本文主要讲解文件的MD5值计算及上传逻辑。大致思路:在选择文件获取到文件之后,首先是对文件进行MD5值的计算,然后拿着这个MD5值对查询后端接口此文件是否存在。查询结果分为三种情况,一是不存在,二是已存在,三是部分存在。不存在时对文件分块,然后一块一块上传;已存在时直接使用已存储的文件,即秒传;部分存在时后端会返回不存在的文件块的位置,然后上传对应不存在的块。

专注前端技术,包括Web端、移动端、小程序、APP 4019

JavaScript 版本自动生成文章摘要

搜了搜这个,发现找不到答案。所以自己写了一个,很多程序绕过这个问题,往往人工来决定在何处截断 ,太麻烦了。

400G光模块测试全攻略:从PCS层到CMIS合规的避坑指南

本文为网络设备测试工程师和光通信研发人员提供了一份详尽的400G光模块测试实战指南。文章深入剖析了从PCS层信号完整性、FEC容限到CMIS管理接口合规性测试的全流程,并分享了ANLT协议分析、SerDes眼图调试以及系统级流量压力测试中的核心技巧与常见避坑点,旨在帮助读者构建一套高效、精准的测试体系,确保高速光模块的可靠性与性能。

weixin_29300931的博客 209

MD5

MD5是message-digest algorithm 5(信息-摘要算法)的缩写,被广泛用于加密和解密技术上,它可以说是文件的“数字指纹”。任何一个文件,无论是可执行程序、图像文件、临时文件或者其他任何类型的文件,也不管它体积多大,都有且只有一个独一无二的MD5信息值,并且如果这个文件被修改过,它的MD5值也将随之改变。因此,我们可以通过对比同一文件的MD5值,来校验这个文件是否被“篡改”过。

_酉告的专栏 479

别再折腾SNAP了!ENVI 5.6.0 直接拖拽打开Sentinel-2 L2A数据的正确姿势

本文详细介绍了ENVI 5.6.0直接处理Sentinel-2 L2A数据的高效方法,无需通过SNAP进行繁琐的重采样预处理。通过直接拖拽XML文件,用户可以快速加载不同分辨率的波段数据,显著提升工作效率。文章还对比了直接打开与SNAP重采样流程的优劣,并提供了常见问题解决方案和高级应用技巧。

weixin_30296405的博客 633

简述MD5信息摘要算法

在之前的文章中,我们聊了不少的加密算法,今天我们聊一种被广泛使用的密码散列函数——MD5。

jiamisoft的博客 1584

CAPL自动化测试

通过本文的学习,读者应该对CAPL自动化测试有了初步的了解,并能够编写复杂的CAPL脚本。在实际项目中,CAPL的应用非常广泛,希望读者能够通过不断的学习和实践,掌握更多的CAPL技巧,提高自己的开发能力。

闲人编程的博客 1526

YOLOv12改进策略【Head】| ASFF 自适应空间特征融合模块,改进检测头Detect_ASFF

在目标检测中,处理多尺度物体是一个具有挑战性的问题。虽然特征金字塔或多级特征塔是解决多尺度问题的常用方法,但在单阶段检测器中,不同尺度特征之间的不一致性限制了其性能提升。为了解决这个问题,提出了自适应空间特征融合(ASFF)模块。

Limiiiing的博客 1168

MD5消息摘要算法的那些事

   前言:前段时间学习MD5加密的一些算法,可以自己写程序对字符串或者文件进行加密成32位字符,而且我自己开发了一个我们网上下载下来验证MD5加密的工具CalcMD5.exe,这里我将贡献一下源码,下面也将介绍一下这个工具的一些代码,所以就整理了一下,作为自己日后学习的一个文档吧 1. MD5(Message Digest)消息摘要算法   (1) MD5算法是一种散列(hash)算法(摘要...

weixin_34344677的博客 195

VSCode PlantUML 插件超详细教程:从安装配置到实战绘图全流程

VSCode PlantUML 插件超详细教程:从安装配置到实战绘图全流程

weixin_69237381的博客 908

MD5加密--(信息-摘要算法) 哈希算法之一

一个任意长度的字节串变换成一定长度的十六进制的大整数.注意,字符串的转换过程是不可逆的,不能通过加密结果,反向推导出原始内容基本介绍需要导入第三方框架: NSString+HashMD5特点压缩性 : 任意长度的数据,算出的 MD5 值长度都是固定的.容易计算 : 从原数据计算出 MD5 值很容易.抗修改性 : 对原数据进行任何改动,哪怕只修改一个字节,所得到的 MD5 值都有很大区别.弱抗碰撞 :

遇见更好的自己 2646

2023年美高赛HiMCM:A题蒲公英 思路

蒲公英,通常称为蒲公英,是一种原产于欧亚大陆的植物,现在在世界各地都可以找到[1]。这种植物很容易通过其亮黄色的花朵(图1)和独特的“马勃”种子头(图2)来识别。该头部的每颗种子都附着在一个类似降落伞的结构上,称为“冠毛”,有利于风的传播[2]。如果处于“马勃”阶段的单个蒲公英毗邻一块开阔的一公顷土地,请创建一个数学模型来预测蒲公英在 1、2、3、6 和 12个月内的传播情况。确保您的模型考虑了各种气候条件(例如温带、干旱和热带气候)对蒲公英生长的影响。2. 蒲 公英、人类和其他植物之间的关系很复杂。

斌擎科技 7402

FlashBootloader01-基于UDS的Flash Bootloader【架构篇】

文章目录1 Flash Bootloader的依赖项2 Flash Bootloader中使用的UDS的主要功能3 Flash Bootloader更新固件3.1 初始化MCU3.2 刷写流程 1 Flash Bootloader的依赖项 通常Flash Bootloader由以下四方面组成: UDS协议 上位机「编写Bootloader Sequence」 通信驱动(如CAN ) Flash Driver 2 Flash Bootloader中使用的UDS的主要功能 1. 10 02服务 客户端

3589

文件生成md5摘要

import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.MessageDigest; import org.slf4j.Logger; imp...

chenliu1818的博客 1260

2025华为od机试真题B卷【版本管理】Python实现

在 软件版本管理中,版本号由点分割的数字组成,例如 1.2.3 和 2.8。现在,你需要编写一个函数,计算两个版本号之间的可用版本号个数。这里的可用版本号指的是所有满足 version1<x<version2的版本号x的个数。若 version1 >=version2 返回0.,

MISAYAONE的博客 643

MD5信息摘要算法详解

MD5信息摘要算法详解 文章目录MD5信息摘要算法详解01 MD5概要02 MD5特性03 MD5应用04 MD5实现算法05 MD5在线网站 01 MD5概要 MD5信息摘要算法,一种被广泛使用的密码散列函数,提供消息完整性,MD5的长度为128位(按照16进制编码,16字节,得到32个字符)是一个散列值(hash value)。 MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。

weixin_43211186的博客 5191

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

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

MD5 摘要算法应用详解

  MD5简介:   MD5是典型的消息摘要算法,是广泛使用的消息摘要算法之一,更是消息摘要算法首要代表。其前身包括MD2、MD4。MD算法家族针对源数据会产生一个128位的消息摘要。在一般应用场景下,会将128二进制摘要信息转换为十六进制,可以得到一个32位的十六进制字符串。   MD5的发展经历了MD2、MD4系列算法:   · MD2:1989年,RSA的发明人之一(罗纳德·李维斯特)开发了MD2算法。 ​  1)首先对信息进行数据补位,使信息的字节长度是16的倍数。   2)以一个16位的检验和作为

键盘上流淌的日子 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

怎么Java进行MD5摘要加密?

MD5摘要加密技术的应用场景包括:网络安全:MD5摘要加密技术可以用于保护网络通信的安全性,例如在密码验证、数字签名、文件完整性验证等方面。数据库安全:MD5摘要加密技术可以用于保护数据库中的敏感信息,例如用户密码、银行账户信息等。软件安全:MD5摘要加密技术可以用于校验软件的完整性,以防止软件被篡改或病毒感染。数字证书:MD5摘要加密技术可以用于数字证书的生成和验证,以保证证书的安全性和可信度。消息认证:MD5摘要加密技术可以用于消息认证,以保证消息的来源和完整性,防止消息被篡改或伪造。

万猫学社 3548

老版QQ原生表情gif动态

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

上一篇: myEclipse打包SWT
下一篇: 比较一个类的两个对象是否相同
chun521
博客等级 码龄20年 11粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值