【环球热闻】文件完整性测试的解决思路和案例
简介:md5sum是一个在Unix和Unix-like操作系统下计算和校验文件MD5值的工具。它主要用于确保文件的完整性。MD5是一种常用的哈希函数,它可以生成一个固定长度(128位)的哈希值。在文件校验的场景中,我们可以通过比较文件的MD5哈希值来检查文件在传输或存储过程中是否被更改。
【资料图】
历史攻略:
Linux:快速创建大文件
python:第三方库大全
安装:在大多数Linux发行版中,md5sum工具是预装的,所以你可能不需要单独安装它。你可以通过输入以下命令来检查 md5sum 是否已经安装:
md5sum --version
Debian的系统(如Ubuntu),使用apt命令:
sudo apt-get install coreutils
对于基于Red Hat的系统(如Fedora或CentOS),使用yum命令:
sudo yum install coreutils
md5sum 的使用步骤:filename 是文件的名称。这条命令会输出一个 MD5 校验和,这是文件内容的唯一表示。
md5sum filename
获取了新的文件后(例如下载后的文件),再次计算文件的 MD5 校验和,然后与原始的 MD5 校验和进行比较。如果两个校验和相同,那么文件没有被更改。如果校验和不同,那么文件可能在传输或存储过程中被更改。
注意事项:MD5不适用于需要高度安全性的场景,因为它已被证明存在碰撞问题(即不同的输入可能会产生相同的输出)。如果你需要更高的安全性,可以考虑使用SHA-256等更安全的哈希函数。
案例:通过检查,我们发现前后hash均为a981130cf2b7e09f4686dc273cf7187e ,即完全上传下载传输过后,文件是完整的
(base) [root@572ysx2s check-file-size]# fallocate -l 2G myfile-01.img # 创建一个文件
(base) [root@572ysx2s check-file-size]# ls -lh # 查看文件大小
total 2.1G
-rw-r--r-- 1 root root 2.0G Jun 1 10:30 myfile-01.img
(base) [root@572ysx2s check-file-size]#
(base) [root@572ysx2s check-file-size]# md5sum myfile-01.img # 通过md5sum 查看文件hash
a981130cf2b7e09f4686dc273cf7187e myfile-01.img
# 注:上传这个文件,此处忽略
(base) [root@ci4vyvxi572ysx2s check-file-size]# cp -r myfile-01.img myfile-02.img # 拷贝、远程拷贝或者下载这个文件。
(base) [root@572ysx2s check-file-size]# md5sum myfile-02.img # 再次通过md5sum 查看文件hash
a981130cf2b7e09f4686dc273cf7187emyfile-02.img
扩展案例:校验某路径下全部文件和完整性。处理某个路径下全部文件的大小和完整性,你可以遍历目标路径下的所有文件,并分别计算它们的大小和哈希值。以下是在 Linux 和 Python 中实现此任务的示例:
Linux案例:使用 find、du 和 md5sum 命令,可以很容易地在一个目录中递归地查找所有文件,计算它们的大小和 MD5 哈希值。
示例脚本:
find /path/to/directory -type f -exec du -sh {} \; -exec md5sum {} \;
在这个脚本中:
find /path/to/directory -type f 命令会查找指定目录中的所有文件(不包括目录)。
-exec du -sh {} \; 会对每个文件执行 du -sh 命令,计算文件的大小。
-exec md5sum {} \; 会对每个文件执行 md5sum 命令,计算文件的 MD5 哈希值。
Python案例:使用 os 和 hashlib 模块来实现此任务。
示例脚本:
#-*-coding:utf-8-*-
#time:2023/6/114:00
# file: test.py
# 公众号: 玩转测试开发
import os
import hashlib
def get_file_md5(file_path):
md5_hash = hashlib.md5()
with open(file_path, "rb") as f:
for byte_block in iter(lambda: f.read(4096),b""):
md5_hash.update(byte_block)
return md5_hash.hexdigest()
def get_file_size(file_path):
return os.path.getsize(file_path)
def process_directory(directory_path):
for root, dirs, files in os.walk(directory_path):
for file in files:
file_path = os.path.join(root, file)
file_size = get_file_size(file_path)
file_md5 = get_file_md5(file_path)
print(f"File: {file_path}\nSize: {file_size} bytes\nMD5: {file_md5}\n")
directory_path = "/path/to/directory"
process_directory(directory_path)
在这个脚本中:
os.walk(directory_path) 函数递归地遍历指定目录的所有文件和子目录。
对于每个文件,脚本会计算文件的大小和 MD5 哈希值,并打印结果。
相关阅读
精彩推荐
- 【环球热闻】文件完整性测试的解决思路和案例
- 美国骑虎难下!制裁李尚福部长后,现在又来求见面?中方:不见!-快看点
- 全方位筑牢食品安全屏障
- 碑林区赛博琉璃湾特色主题街区盛大开业 天天通讯
- 女子裸贷5千4个月变550万 平台为催收贷款将照片和视频肆意传播|世界快播
- 王宝强前妻马蓉露正脸陪子女迎六一,疑独自抚养一双儿女_最新
- 市场指导价52.18万元 奥迪S4 Avant正式上市
- 新华全媒+丨我国海上首个百万吨级二氧化碳封存工程投用 当前热文
- 世界观速讯丨与情人不雅聊天曝光 柳州一局长被免具体详细内容是什么
- 美的空调外机不工作是什么原因_美的空调外机4线接线图 世界即时看
- iOS 17马上发!苹果发布iOS 16关键数据:90%使用率 有你没? 全球快播
- 信阳息县:白土店乡积极开展“无烟,为成长护航” 文明实践活动|实时焦点
- 浙江舟山有农家乐住宿的吗_舟山包吃包住的农家乐多少一天|世界关注
- 马汉认为海军战略运用要贯彻(马汉认为海军是什么军种)
- 天天视点!贷款年利率5%怎么算利息_贷款年利率怎么算
- 兴趣的反义词是什么呢 标准答案怎么写(兴趣的反义词是什么)
- 散粒肿与麦粒肿的区别
- 思源电气:有知名机构于翼资产,正心谷资本参与的多家机构于5月31日调研我司
- 怎样成为明星助理_怎样成为明星
- 【短期融资券新发公告】23百联集SCP002今日发布发行公告
- 冲锋衣面料叫什么|当前快讯
- 累计封存超150万吨 我国首个海上二氧化碳封存示范工程项目投用
- 最新快讯!回忆杀!成年人玩起小时候的游戏有多快乐
- 女友穿婚纱看王源演唱会?当事女子:自己拍的婚纱写真照被盗图 环球今日报
- 鮦阳居士_关于鮦阳居士简述 每日热闻
- 南疆木棉红行走课堂 擦亮乡村振兴底色 全球快播
- 无烟,为成长护航——桓台县田庄小学开展2023年世界无烟日活动
- 郑州市金水区邮编是多少(郑州市金水区邮编) 环球快讯
- 立扫把是什么意思_立扫把是什么梗-环球动态
- 南京生育津贴2023年新规是什么 以下几种情况,也可享受生育津贴