使用MD5算法和sha512sum校验和检验文件完整性
一.前言
在我们日常生活中,无论是下载文件、传输数据还是备份重要信息,如何确保数据的完整性始终是一个不能忽视的问题。本文将向大家介绍如何使用MD5算法和sha512sum校验和来进行文件完整性的验证。
二.MD5算法简介
MD5算法,全称Message-Digest Algorithm 5,是一种广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),通常用一个32位的16进制数表示。MD5被广泛应用于数据的完整性校验。
MD5算法具有以下特性:
- 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
- 容易计算:从原数据计算出MD5值很容易。
- 抗修改性:对输入的数据稍作修改,经过MD5后将产生不同的结果。
- 强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
尽管在理论上,MD5存在着潜在的安全漏洞,但对于文件完整性校验来说,它仍然是足够安全的。
三.什么是校验和
校验和(checksum)是通过特定的算法,对一组数据进行计算得到的一个简短的固定大小的位序列。如果输入数据稍有改动,计算出的校验和通常会产生显著的不同。因此,校验和常被用于检测数据传输或存储过程中是否发生错误。
在文件完整性校验中,我们可以通过比较文件的原始校验和与当前计算出的校验和是否一致,来判断文件在传输或存储过程中是否未被修改。如果两个校验和相同,那么文件被认为是完整的;否则,文件可能已被篡改或损坏。
MD5算法和SHA-512算法都可以用于生成文件的校验和。MD5算法生成的校验和长度为128位,而SHA-512算法生成的校验和长度为512位,后者因此提供了更高级别的安全性。
四.使用MD5算法和sha512sum校验和检验文件完整性
假如存在一个文件calico.yaml,我把文件发送给某人,怎么证明文件在传输的途中没有被恶意修改?
root@k8scludes1:~# ls
calico.yaml
先求出calico.yaml文件的md5值。
root@k8scludes1:~# md5sum calico.yaml
9cc4a633f4ba45f0fd723512ec60f330 calico.yaml
把文件calico.yaml传输给etcd2机器。
root@k8scludes1:~# scp calico.yaml 192.168.110.131:/root/test/
etcd2机器收到文件了。
[root@etcd2 test]# ls
calico.yaml
MD5算法可以用来验证网络文件传输的完整性,Linux的md5sum命令便用于生成和校验文件的md5值。需要注意的是,md5sum检验的是文件内容,而不是文件名。
etcd2机器收到文件之后,我们求文件的md5值。如果此时生成的md5值和原来的md5值一致,则文件是完整的,没有被修改过。
数字签名也是类似的:文件和文件生成的md5值一起传输,md5值使用私钥加密,接收方收到后使用公钥解密md5值,接收方使用收到的文件生成md5值,如果md5值和公钥解密之后的md5值一致,则文件没有被修改过。
[root@etcd2 test]# md5sum calico.yaml
9cc4a633f4ba45f0fd723512ec60f330 calico.yaml
创建校验和目录。
root@k8scludes1:~# mkdir checksum
root@k8scludes1:~# cd checksum/
root@k8scludes1:~/checksum# ls
calico.yaml
求文件的校验和。
root@k8scludes1:~/checksum# sha512sum calico.yaml
94eece98db92232a42080e33f87e0659182e2ff9e347db38a494928c247289fcfa763a20e18ee63a84fe87f436b91e710927d138621640d6753083b8b339e8cf calico.yaml
把校验和写入到文件里。
root@k8scludes1:~/checksum# sha512sum calico.yaml >check.txt
root@k8scludes1:~/checksum# vim check.txt
root@k8scludes1:~/checksum# cat check.txt
calico.yaml
94eece98db92232a42080e33f87e0659182e2ff9e347db38a494928c247289fcfa763a20e18ee63a84fe87f436b91e710927d138621640d6753083b8b339e8cf
94eece98db92232a42080e33f87e0659182e2ff9e347db38a494928c247289fcfa763a20e18ee63a84fe87f436b91e710927d138621640d6753083b8b339e8cf
如果两个校验和是一致的,则只剩一行(去重)。
root@k8scludes1:~/checksum# cat check.txt | uniq
calico.yaml
94eece98db92232a42080e33f87e0659182e2ff9e347db38a494928c247289fcfa763a20e18ee63a84fe87f436b91e710927d138621640d6753083b8b339e8cf
生成校验和并写入文件。
root@k8scludes1:~/checksum# sha512sum calico.yaml >check.txt
root@k8scludes1:~/checksum# cat check.txt
94eece98db92232a42080e33f87e0659182e2ff9e347db38a494928c247289fcfa763a20e18ee63a84fe87f436b91e710927d138621640d6753083b8b339e8cf calico.yaml
sha512sum -c 判断calico.yaml文件的校验和和check.txt 里的校验和是否一致,输出OK则校验和一致。
root@k8scludes1:~/checksum# sha512sum -c check.txt
calico.yaml: OK
五.总结
MD5和sha512sum校验和是检查文件完整性的有效方法。它们能够帮助我们在下载、传输或备份文件的过程中确保数据的一致性,提高我们的数据安全性。
尽管MD5和SHA-512广泛用于计算文件校验和,但它们并不能防止数据被篡改。如果你需要保护数据的机密性,建议使用更强大的加密技术,例如AES或RSA等。
使用MD5算法和sha512sum校验和检验文件完整性的更多相关文章
- 利用SHA-1算法和RSA秘钥进行签名验签(带注释)
背景介绍 1.SHA 安全散列算法SHA (Secure Hash Algorithm)是美国国家标准和技术局发布的国家标准FIPS PUB 180-1,一般称为SHA-1.其对长度不超过264二进制 ...
- 经典算法和OJ网站(开发者必备-转)
一. Online Judge简介: Online Judge系统(简称OJ)是一个在线的判题系统.用户可以在线提交程序多种程序(如C.C++.Pascal)源代码,系统对源代码进行编译和执行,并通过 ...
- 使用Apriori算法和FP-growth算法进行关联分析
系列文章:<机器学习实战>学习笔记 最近看了<机器学习实战>中的第11章(使用Apriori算法进行关联分析)和第12章(使用FP-growth算法来高效发现频繁项集).正如章 ...
- ceph crush算法和crushmap浅析
1 什么是crushmap crushmap就相当于是ceph集群的一张数据分布地图,crush算法通过该地图可以知道数据应该如何分布:找到数据存放位置从而直接与对应的osd进行数据访问和写入:故障域 ...
- 最小生成树 Prim(普里姆)算法和Kruskal(克鲁斯特尔)算法
Prim算法 1.概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (gra ...
- prim 算法和 kruskal算法
Prim算法 1.概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (gra ...
- WordCount作业提交到FileInputFormat类中split切分算法和host选择算法过程源码分析
参考 FileInputFormat类中split切分算法和host选择算法介绍 以及 Hadoop2.6.0的FileInputFormat的任务切分原理分析(即如何控制FileInputForm ...
- MD5进行文件完整性校验的操作方法
我组产品包含大量音频和图片资源,MD5主要就用来检测这些资源文件的完整性.主要思路是:先计算出所有资源文件的MD5值,存到一个xml文件中,作为标准的MD5值.然后把这个xml文件放到我们的产品中,每 ...
- 最小生成树Prim算法和Kruskal算法(转)
(转自这位大佬的博客 http://www.cnblogs.com/biyeymyhjob/archive/2012/07/30/2615542.html ) Prim算法 1.概览 普里姆算法(Pr ...
- TCP_NODELAY和TCP_CORK nagle算法和cork算法
TCP_NODELAY 默认情况下,发送数据採用Nagle 算法.这样尽管提高了网络吞吐量,可是实时性却减少了,在一些交互性非常强的应用程序来说是不同意的.使用TCP_NODELAY选项能够禁止Nag ...
随机推荐
- Maven安装、阿里云镜像配置、Idea中创建Maven项目、Tomcat的部署
我为什么要学这个技术? 为了更快创建web开发项目和jar包 在javaweb开发中,需要使用大量的jar包,我们手动去导入: 如何能够让一个东西自动帮我导入和配置这个jar包 因此,Maven诞生了 ...
- Redis数据结构三之压缩列表
本文首发于公众号:Hunter后端 原文链接:Redis数据结构三之压缩列表 本篇笔记介绍压缩列表. 在 Redis 3.2 版本之前,压缩列表是列表对象.哈希对象.有序集合对象的的底层实现之一. 因 ...
- 一次查找分子级Bug的经历,过程太酸爽了
"Debugging is like trying to find a needle in a haystack, except the needle is also made of hay ...
- ZYNQ 启动过程简介 以及 ZYNQ 裸机生成BOOT.BIN
背景 下图是ZYNQ的启动过程 上电复位等完成后,先执行BootRom,然后再根据MIO设定的启动方式选择对应从哪里启动,无论从哪里启动,都需要一个BOOT.BIN文件,对于裸机程序来说: BOOT. ...
- 解密Prompt系列9. 模型复杂推理-思维链COT基础和进阶玩法
终于写了一篇和系列标题沾边的博客,这一篇真的是解密prompt!我们会讨论下思维链(chain-of-Thought)提示词究竟要如何写,如何写的更高级.COT其实是Self-ASK,ReACT等利用 ...
- 【HMS Core】Health Kit健康数据采样, 原子采样数据问题
[问题描述] 1.体脂数据中的肌肉量和水份量是如何获得的,都有些什么?体脂数据中的体重,体脂是用户自己上传的,然后通过计算公式得到数据吗 2.日常活动统计数据包含什么内容,怎么获取这些数据? 3. 锻 ...
- 使用EasyExcel对excel数据进行相似度判断
@Data public class ExeclDto { /** * execl表 */ private String filename; /** * 需要匹配的工作表名 */ private St ...
- 如何使用libavfilter库给pcm音频采样数据添加音频滤镜?
一.初始化音频滤镜 初始化音频滤镜的方法基本上和初始化视频滤镜的方法相同,不懂的可以看上篇博客,这里直接给出代码: //audio_filter_core.cpp #define INPUT_SAMP ...
- Java在算法竞赛中的一些技巧
转载请注明出处(- ̄▽ ̄)- 谈到算法竞赛中使用Java,那么有一个绕不开的点就是如何快速地输入输出.通常来说,Scanner类固然可以帮助我们顺利地完成各种输入要求,而syso(System.o ...
- 国内可用的GPT4镜像站
我做了个镜像站,GPT4的费用目前太贵了. 虽然做了个低价的月费,但基本上亏本在做,接口的实际费用高出太多. 运行了1个月,每天有几十人在用吧. 有兴趣的可以收藏一下 GPT4的验明正身的问题&quo ...