> # ♻️ 资源
> **大小:** 1.08MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010122**](https://www.yuque.com/sxbn/ks/100010122)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87291291**](https://download.csdn.net/download/s1t16/87291291)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# 基于 MD5 算法的文件完整性校验程序
## 一、实验目的
① 深入理解 MD5 算法的基本原理。
② 掌握利用 MD5 算法生成数据摘要的所有计算过程。
③ 掌握 Linux 系统中检测文件完整性的基本方法。
④ 熟悉 Linux 系统中文件的基本操作方法。
⑤ 准确地实现 MD5 算法的完整计算过程。
⑥ 对于任意长度的字符串能够生成 128 位 MD5 摘要。
⑦ 对于任意大小的文件能够生成 128 位 MD5 摘要。
⑧ 通过检查 MD5 摘要的正确性来检验原文件的完整性。
## 二、实验内容
本实验使用 C++ 语言在 Linux 平台进行编程和运行,代码运行于腾讯云服务器主机。实现了实验要求中关于 MD5 的五项功能,列举如下:
./md5 -h 查看帮助
./md5 -t 打印程序的测试信息
./md5 -c nankai.txt 计算出的被测文件的 MD5 摘要并打印
./md5 -v nankai.txt 验证文件完整性方法一
./md5 -f nankai.txt nankai.md5 验证文件完整性方法二 实验涉及的文件包括:
(1) main.cpp:主函数文件。
(2) helpFunc.h:功能函数定义。
(3) helpFunc.cpp:功能函数实现。
(4) MD5.h:MD5 类定义。
(5) MD5.cpp:MD5 类的部分函数实现。
(6) MD5Update.cpp:MD5 类中 Update 相关函数实现。
(7) MD5codePro.cpp:MD5 类中进制转换、类型变换相关函数实现。
(8) nankai.txt 和 nankai.md5:测试文件
(9) md5:可执行文件
## 三、实验步骤及实验结果
本次实验步骤:
(1) main.cpp:主函数文件。
通过 unordered_map 数据结构存储各操作的 string 和对应的函数指针。
![7677b85cad6c9e7d73e60659898f7020.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1703579431919-123b91d4-5297-45ea-8389-6f3e56a81483.png#averageHue=%231f1f1f&clientId=u320d5474-164a-4&from=paste&height=422&id=u52312540&originHeight=528&originWidth=838&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=1773330&status=done&style=none&taskId=u766f7cfe-dc5b-48d8-a40e-5196e33b67f&title=&width=670.4)
(2) helpFunc.h:各功能函数的定义,以及 include 程序需要的一些系统文件。
![f91cac7b06559be780215010b1e9fefc.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1703579447019-5bc38bd4-55ba-48e8-a303-34ee24aeac50.png#averageHue=%231f1e1e&clientId=u320d5474-164a-4&from=paste&height=396&id=ud1f3b92d&originHeight=495&originWidth=838&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=1662493&status=done&style=none&taskId=u71af4a2e-610d-48c8-b25e-5fb13856768&title=&width=670.4)
(3) helpFunc.cpp:功能函数实现。 各函数根据实验报告的要求调用 MD5 类的功能并打印信息。
![a30a79c860b2b8fb51c155b169a02724.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1703579482067-5111e140-7610-4729-9456-2d47b1da17e5.png#averageHue=%23393736&clientId=u320d5474-164a-4&from=paste&height=21&id=YhGZ0&originHeight=26&originWidth=697&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=1840&status=done&style=none&taskId=u8b0e5c3d-893b-44fc-8499-9f195cfb9b7&title=&width=557.6)
![513112d373aaea5b481e5cc724dd195c.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1703579485766-4874758b-fa7a-4d2b-850d-4d771473e58b.png#averageHue=%2321201f&clientId=u320d5474-164a-4&from=paste&height=1074&id=yYPGy&originHeight=1343&originWidth=838&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=4510436&status=done&style=none&taskId=u0ad3b2ae-0f34-45ac-8e47-e1099ab2e37&title=&width=670.4)
![5f08a7b209ab2ccbb995770c06529a01.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1703579483870-24d0ad51-a915-495f-be7d-897067aba29c.png#averageHue=%2321201f&clientId=u320d5474-164a-4&from=paste&height=326&id=u690d75e9&originHeight=407&originWidth=838&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=1366952&status=done&style=none&taskId=ua0143bf2-2c90-45df-ba9d-961887ae27f&title=&width=670.4)![5d8122590d44676e5b4331123ed22204.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1703579485817-b48a7ccd-193c-46c2-bc89-59e741b2bbc5.png#averageHue=%23201f1f&clientId=u320d5474-164a-4&from=paste&height=1099&id=u5f5e65bb&originHeight=1374&originWidth=838&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=4614550&status=done&style=none&taskId=ua0346dae-32dc-478f-aaa8-8f124a09085&title=&width=670.4)
![](https://www.writebug.com/myres/static/uploads/2021/12/12/a30a79c860b2b8fb51c155b169a02724.writebug#id=x4yy7&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)(4) MD5.h:MD5 类定义,包括一些运算的 define。
![76edb92f2a1eab1e3e58a7f954904c94.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1703579538499-4b3feafc-44b3-4e4a-a662-fca766762ec8.png#averageHue=%231e1e1e&clientId=u320d5474-164a-4&from=paste&height=719&id=u61e6cab5&originHeight=899&originWidth=838&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=3019302&status=done&style=none&taskId=u84ae406a-dcae-46a3-b6a5-5e295278709&title=&width=670.4)![48393d38dd61c03a69c384217dab98bb.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1703579537392-87ac1f5a-3241-4cbe-ba73-a6d4122ff59c.png#averageHue=%231e1e1e&clientId=u320d5474-164a-4&from=paste&height=326&id=u9b86d8a4&originHeight=407&originWidth=838&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=1366952&status=done&style=none&taskId=ub8dd52fe-700d-46ef-89b4-b21ebce2071&title=&width=670.4)
(5) MD5.cpp:MD5 类的部分功能实现,主要为 Reset 函数,Tostring 函数,Transform 函数。
![2fc57e4892386e50f231355555f08edf.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1703579580785-19f16638-aaa6-4cc9-b51a-5f6b4ee20b82.png#averageHue=%231f1e1e&clientId=u320d5474-164a-4&from=paste&height=694&id=u80b71f8d&originHeight=868&originWidth=838&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=2915188&status=done&style=none&taskId=u57efe768-f54a-492e-9b7a-5ad17a82e7b&title=&width=670.4)
![9a084bfaa38fba279ee335ffc82032e5.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1703579581818-6c44e113-e818-440e-afd7-acf00407e384.png#averageHue=%231f1f1e&clientId=u320d5474-164a-4&from=paste&height=1099&id=rlTiU&originHeight=1374&originWidth=838&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=4614550&status=done&style=none&taskId=ue61da03c-e106-41d4-8537-59c92b2668a&title=&width=670.4)![26e7b5265a75e6a91f0ca2cd4857c912.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1703579580592-e31ee423-3960-4a4f-a7ea-f8a45b4672b4.png#averageHue=%231f1e1e&clientId=u320d5474-164a-4&from=paste&height=625&id=ueb8876a5&originHeight=781&originWidth=838&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=2623000&status=done&style=none&taskId=u3b59edb8-bcdc-4386-bc46-b2a6b57d8b1&title=&width=670.4)
(6) MD5Update.cpp:MD5 类中 Update 相关函数,包括 2 个 public 函数和 1 个 private 函数。
![a6b37e0eb87dce6d550e43b32ff09bd5.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1703579619691-fdd16a9b-2eb9-43c6-8330-ed18353e095b.png#averageHue=%231e1e1e&clientId=u320d5474-164a-4&from=paste&height=396&id=uba07bc15&or
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
详情介绍:https://www.yuque.com/sxbn/ks/100010122 基于 MD5 算法的文件完整性校验程序,本实验使用 C++ 语言在 Linux 平台进行编程和运行。 ./md5 -h 查看帮助 ./md5 -t 打印程序的测试信息 ./md5 -c nankai.txt 计算出的被测文件的 MD5 摘要并打印 ./md5 -v nankai.txt 验证文件完整性方法一 ./md5 -f nankai.txt nankai.md5 验证文件完整性方法二 实验涉及的文件包括: (1) main.cpp:主函数文件。 (2) helpFunc.h:功能函数定义。 (3) helpFunc.cpp:功能函数实现。 (4) MD5.h:MD5 类定义。 (5) MD5.cpp:MD5 类的部分函数实现。 (6) MD5Update.cpp:MD5 类中 Update 相关函数实现。 (7) MD5codePro.cpp:MD5 类中进制转换、类型变换相关函数实现。 (8) nankai.txt 和 nankai.md5:测试文件 (9) m
资源推荐
资源详情
资源评论
收起资源包目录
100010122-基于C++实现 MD5 算法的文件完整性校验程序.zip (16个子文件)
md5wzxjy
MD5.h 2KB
MD5Update.cpp 2KB
.vscode
settings.json 146B
launch.json 877B
LICENSE 1KB
MD5codePro.cpp 2KB
main.cpp 708B
实验说明.pdf 658KB
实验报告.pdf 347KB
md5 665KB
MD5.cpp 3KB
helpFunc.cpp 3KB
helpFunc.h 668B
nankai.txt 7B
README.md 12KB
nankai.md5 32B
共 16 条
- 1
资源评论
- wyh1214002023-01-13这个资源总结的也太全面了吧,内容详实,对我帮助很大。
- 芋头别写BUG啦~2023-06-09资源很实用,内容详细,值得借鉴的内容很多,感谢分享。
- m0_630078642023-01-15总算找到了自己想要的资源,对自己的启发很大,感谢分享~
- lijian9962023-05-20资源很赞,希望多一些这类资源。
- 2201_757616172023-06-08资源很好用,有较大的参考价值,资源不错,支持一下。
神仙别闹
- 粉丝: 2668
- 资源: 7640
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功