首页 > 编程语言 >使用MD5算法和sha512sum校验和检验文件完整性

使用MD5算法和sha512sum校验和检验文件完整性

时间:2023-08-21 12:34:00浏览次数:42  
标签:文件 sha512sum 校验 yaml root calico MD5

目录

一.前言

在我们日常生活中,无论是下载文件、传输数据还是备份重要信息,如何确保数据的完整性始终是一个不能忽视的问题。本文将向大家介绍如何使用MD5算法和sha512sum校验和来进行文件完整性的验证。

二.MD5算法简介

MD5算法,全称Message-Digest Algorithm 5,是一种广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),通常用一个32位的16进制数表示。MD5被广泛应用于数据的完整性校验。

MD5算法具有以下特性:

  1. 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
  2. 容易计算:从原数据计算出MD5值很容易。
  3. 抗修改性:对输入的数据稍作修改,经过MD5后将产生不同的结果。
  4. 强抗碰撞:已知原数据和其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等。

标签:文件,sha512sum,校验,yaml,root,calico,MD5
From: https://www.cnblogs.com/renshengdezheli/p/17645701.html

相关文章

  • 【Spring Boot】Bean字段校验-JSR303
    规范:JSR303 BeanValidation1.0 开发过程:1、Bean定义字段校验规则:2、Controller引入@Valid(来自)或@Validated(来自org.springframework.validation.annotation)触发校验样例如下:背景知识:1.HibernateValidator定义Bean字段校验的注解和校验器实现......
  • Spring Boot 实现各种参数校验
    简单使用JavaAPI规范(JSR303)定义了Bean校验的标准validation-api,但没有提供实现。hibernatevalidation是对这个规范的实现,并增加了校验注解如@Email、@Length等。SpringValidation是对hibernatevalidation的二次封装,用于支持springmvc参数自动校验。接下来,我们以spring-boot......
  • 代码校验和格式化
     eslint 通用配置eslint使用版本优先级项目安装eslint(推荐使用)全局安装的eslint 忽略文件一般用于第三方lib库,自动生成代码等。 //.eslintignore文件/assets/js/iconfont/*/src/service/*/dist**/iconfont/***/qiyu.ts 禁用规则全局禁用需要去......
  • 简单计算公式校验
    letformulaStr='你的公式'if(/^[\d()*\/+-]+$/.test(formulaStr)){}else{console.log('公式异常:包含不能解析的字符')}if(/[\+\-\*\/]{2,}/.test(formulaStr)){console.log('公式异常:运算符连续')}if(/\(\)/.test(formulaStr)){console.log(......
  • vue el-form 多种校验
    rules:Object.freeze({name1:[{required:true,message:'请输入发放计划编码',trigger:'blur'},{pattern:/^(?!\s+).*(?<!\s)$/,message:'首尾不能为空格',trigger:'blur'}],name2:[{required:true,mess......
  • vue-treeselect 校验失败添加红框
    需求vue-treeselect校验及清除校验这篇介绍了用@input在校验失败时显示校验信息。但还需要同时显示红色边框。如下图所示:解决办法思路:动态绑定类名,校验失败时切换类名,更改边框颜色。子组件SelectTree二次封装vue-treeselect:组件SelectTree<template><divclass=......
  • vue页面对字段进行校验,必填未填则进行提示
    <el-form:model="form"><el-form-itemlabel="等级名称":label-width="formLabelWidth"prop="name":rules="[{required:true,message:'请输入等级名称',trigger:'blur'}]"></el-fo......
  • 【web_逆向04】MD5摘要算法
    MD5是一个非常常见的摘要(hash)算法,其特点就是小巧.速度快.极难被破解。所以,md5依然是国内非常多的互联网公司选择的密码摘要算法这玩意不可逆.所以.摘要算法就不是一个加密逻辑.相同的内容计算出来的摘要应该是一样的不同的内容(哪怕是一丢丢丢丢丢不一样)......
  • 使用elementui动态添加表单并校验
    elementui官网动态增减表单项的例子有几个地方容易被忽略<el-form:model="dynamicValidateForm"ref="dynamicValidateForm"label-width="100px"class="demo-dynamic"><el-form-itemprop="email"label="邮箱"......
  • PowerShell 使用SqlScriptDOM对T-SQL做规则校验
    ​ 对于数据项目来说,编写Sql是一项基本任务同时也是数量最多的代码。为了统一项目代码规范同时降低CodeReview的成本,因此需要通过自动化的方式来进行规则校验。由于本人所在的项目以SQLServer数据库为基础,于是本人决定通过使用SqlScriptDom类库来做T-SQL的规则校验。如果是其......