1.1 项目常用MD5值特性

MD5值在项目中的应用与计算方法

一、本文前言

1. 背景介绍

MD5信息摘要算法(英语:MD5 Message-Digest
Algorithm),是一种使用范围很广的加密算法。该算法是不可逆的,但是可以采取碰撞的方式撞出对应的明文值。由于MD5加密生成的值是唯一的,因此利用这个特性,可以在项目中为很多操作提供便捷的验证途径。

2. 本文概况

本文将列举项目中可能遇到的与MD5加密值使用相关的场景,以及对应的处理方法。不讲废话,下面列举的场景均来自实际项目中所可能遇到的问题【欢迎补充】


二、适用场景

文件下载、发送、分片前,确保文件完整,计算其MD5值。

例如:A文件在A服务器上计算其MD5值,B电脑下载A文件到本地,再去到B电脑上计算A文件MD5值,前后进行比对,结果一样则表示文件完整可以使用

1. 文件下载完整度校验

场景需求:

  • 通过某个下载地址下载软件包、插件包、模块包、扩展包或其他资料

下载风险:

  • 由于提供下载方服务器状态不稳定,导致下载的数据存在缺失
  • 由于连接的网络质量较差状态不稳定,导致下载的数据存在缺失
  • 由于使用不完善的下载工具、缓存未清理,导致下载的数据存在缺失

实际场景:

  • 通过某个下载地址下载软件包或其他资料,下载的文件由于上述问题可能导致不完整使用会出现问题,因此可以使用下列方法验证文件是否完整

1.1 Windows使用【cmd】计算MD5方法

certutil -hashfile 文件/路径 md5

1.2 Windows使用【Powershell】计算MD5方法

Get-FileHash -Algorithm MD5 文件/路径

1.3 Linux使用【md5sum】计算MD5方法

md5sum 文件/路径



2. 文件流转完整度校验

场景需求:

  • 通过某个渠道、软件、通道等接收发送的文件

传输风险:

  • 由于发送方网络状态不稳定,导致下载的数据存在缺失
  • 由于数据传输通道状态不稳定,导致下载的数据存在缺失
  • 由于接收方网络状态不稳定、缓存未清理等,导致下载的数据存在缺失

实际场景:

  • 网络状态不良时传输发送文件,存在诸多不确定因素,为了避免接收的文件可正常使用接收后需要做校验

2.1 Windows使用【cmd】计算MD5方法

certutil -hashfile 文件/路径 md5

2.2 Windows使用【Powershell】计算MD5方法

Get-FileHash -Algorithm MD5 文件/路径

2.3 Linux使用【md5sum】计算MD5方法

md5sum 文件/路径



3. 文件分片合并完整度校验

场景需求:

  • 特殊环境下,大文件拷贝需要使用光盘,一般光盘大小有限制,所以拷贝大文件往往需要采取分片的形式,将大文件分成多个小文件刻成多个光盘,全部导入后再进行分片合并。

刻录风险:

  • 由于刻录环境存在波动不能稳定刻录数据,导致刻录的文件存在缺失
  • 由于刻录的光盘有坏块,导致刻录的文件不完整
  • 由于刻录过程中误触了刻录机连接线等,导致刻录的数据存在缺失

实际场景:

  • 将一个大文件分片成多个小文件,然后将分片后的文件刻录到多个盘中,由于环境、光盘、刻录机等可能存在的问题,都会导致刻录到光盘的数据不完整,因此当文件导入内网合并后需要做数据校验

3.1 文件分片

  • 此处不详细描述分片与合并的操作,具体参考另一篇文文章,仅列举操作命令
3.1.1 Linux分片
  • -b :指定分片包的大小的参数
  • 10m :具体分片包的大小
  • -d:指定分片包后缀命名为数字的参数
  • 100MB.gz :指定需要分片的大文件
  • 100MB.tar.gz. :指定分片后的包命名前缀,后缀为数字递增
  • 命令效果:将 100MB.gz 这个100MB的文件按照一个文件10MB分片分为10个文件,解决了大文件导入问题
split -b 100m -d 100MB.gz 100MB.tar.gz.

3.1.2 Windows分片
  • 使用压缩软件360压缩、7-zip等均可分片,选择指定分片大小即可

3.2 文件合并

3.2.1 Linux合并
cat 100MB.tar.gz.0* >> 100MB.tar.gz

3.2.2 Windows合并
  • Windows合并直接将分片的文件放至同一文件夹解压即可

3.3 计算MD5

  • MD5计算方法同1.1、1.2、1.3与2.1、2.2、2.3

文件合并后MD5校验不一致排查思路:

问题排查思路:

1.外网进行文件分片

2.外网将分片的文件合并,计算合并MD5与原文件比对,确定外网分片的每个文件没有问题

2.确保外网分片每个文件没有问题后,单独计算每个分片文件的MD5值

3.将所有分片文件导入内网

4.导入内网后计算每个分片文件的MD5值,确保与外网一致

5.将文件合并,然后计算整个文件MD5值,基本上没有问题


4. 文本MD5加密

场景需求:

  • 当需要修改某个配置文件的密码字段或其他内容时,密码多数情况会以密文形式存储,因此需要计算明文的密文再将其修改到配置文件中

4.1 Linux

  • -n禁止 echo在输出末尾添加换行符【很重要必须加的参数】
echo -n "admin123" | md5sum

4.2 windows

  • Windows计算纯文本的MD5值需要将文本内容写入文件内,计算文件的MD5值得出文本的值
certutil -hashfile admin123.txt md5



5. 文件黑白名单MD5提取

场景需求:

  • 除了文件流转下载等需要,部分场景下需要计算文件的MD5值,用来给文件加入黑白名单使用

使用需求:

  • 由于杀毒软件误处理需要的文件,需要避免再次被处理
  • 由于某个文件已知是病毒或者受管控,可以在内网终端或者其他平台将文件的MD5值加入黑名单

实际场景:

  • 杀毒软件对某个文件误处理,此时文件又不能直接上传加入白名单,可以计算文件的MD5进行加白,黑名单同理

【文件的MD5计算方法同1.1、1.2、1.3与2.1、2.2、2.3】


三、使用环境

3.1 互联网

  • 文件下载
  • 文件流转
  • 文件识别

3.2 内网

  • 文件下载
  • 文件流转
  • 文件识别
  • 文件刻录与合并
  • 弱口令识别

四、注意事项

1. 部分Windows不带certutil命令

内网不能连接外网环境下,部分Windows不支持自带命令校验MD5,常见原因可能如下:

  • 系统版本过旧【Windows Server 2003 / Windows XP】
  • 工具路径不正确
  • 系统被精简、定制系统
  • 管理员策略管控

处理方法:使用自带的Powershell进行校验【1.3、2.3有使用方法】

2. 大小写敏感问题

Windows:使用Windows命令行计算MD5值,命令正确即可,大小写不敏感


Linux:使用Linux命令行计算MD5值,需要大小写正确,大小写敏感


五、相关资料


欢迎交流

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值