网上分享文件如何科学校验?请看cksum或者shasum

简介: 小白最近学习编程学烦了,看到学委之前写了一篇节约3小时之间试水Unity的,直接过来找我要了!(要么是懒得下安装包,不然是太依赖学委了,都不好!)

刚好我手上有一个Unity安装包, 就发给他了。


不知道啥原因,他说传输后打不开?


怎么可能呢?


接着,再传了一次还是打不开。


这让学委一下子想到了:得cksum一下


1) 先cksum工具本地算一次,得到校验码

2)然后在接受的系统中又计算一次,得到文件校验码

3)当两个数字校验相等,文件被认为是被正确传输了


使用就像下面一样:


cksum 文件名

image.png

第一个数字:2283207869 //为校验码

第二个数字: 844948304 // 为文件字节数


然后我让小白在本机跑一边cksum,发结果给我,一看他那边的校验数字居然是 33303330333 ,这个数字,稍微思考一下就很离谱!


很明显Unity包传输出错了。


这次我直接拷贝U盘给他了,并且进入U盘对应目录进行cksum了,万无一失!


好了,小白可以先走了。亲爱的读者我们继续学习一下cksum吧,很多使用的。


cksum官方补充

Linux cksum命令用于检查文件的CRC是否正确。确保文件从一个系统传输到另一个系统的过程中不被损坏。


CRC是一种排错检查方式,该演算法的标准由CCITT所指定,至少可检测到99.998%的已知错误。指定文件交由cksum演算,它会回报计算结果,供用户核对文件是否正确无误。

https://www.man7.org/linux/man-pages/man1/cksum.1.html


这个算法不继续介绍,本文谈谈应用。


更多应用 - sha512cksum

sha512cksum 比cksum(32位 cksum)更加可靠,因为是512位哈希cksum。


比如我们常见的maven(Java项目管理工具):


下图的表格第二列为下载链接,第三列为每一个包的sha512cksum的签名。


image.png

上面页面的链接可以点击【maven下载页面】

我们可以通过点击上面的链接下载,比如这个:maven tar gz包

通过这个链接下载然后跑shasum在本地校验一次。

shasum -a 512 apache-maven-3.8.1-bin.tar.gz
#得到这个签名:0ec48eb515d93f8515d4abe465570dfded6fa13a3ceb9aab8031428442d9912ec20f066b2afbf56964ffe1ceb56f80321b50db73cf77a0e2445ad0211fb8e38d

image.png

这个值跟第三列链接的文件【点这里下载sha512】内容必须一致.

操作复杂,学委准备了下面的脚本。

#!/bin/sh
#雷学委的demo代码
#仅支持macbook
url=https://mirror-hk.koddos.net/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz
#url_sha512=${url}.sha512
url_sha512=https://downloads.apache.org/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz.sha512
curl ${url_sha512} -o maven.tar.gz.sha512
curl ${url} -o maven.tar.gz
shasum -a 512  maven.tar.gz

读者可以运行这个脚本试试,最好的验证效果如下图:

image.png

更多场景

多文件迁移校验

通常是用在大量的打包数据迁移,生成每个文件的数字签名。


部署制品的校验

做Java的同学知道一个叫做Nexus的依赖仓库,不止可以放jar,还能放tgz包,我们通常会生成tgz包的同时,进行sha512把签名结果存到文件一并传到nexus上面。


当我们拿tgz文件部署的时候,同时下载tgz和sha512,本地校验,保证了部署安装的包跟实际交付的一致。


目录
相关文章
|
存储
RandomAccessFile实现文件分割、合并
RandomAccessFile实现文件分割、合并
286 0
|
存储 设计模式 测试技术
怎么基于Pytest+Requests+Allure实现接口自动化测试?
该文介绍了一个基于Python的自动化测试框架,主要由pytest、requests和allure构成,采用关键字驱动模式。项目结构分为六层:工具层(api_keyword)封装了如get、post的请求;参数层(params)存储公共参数;用例层(case)包含测试用例;数据驱动层(data_driver)处理数据;数据层(data)提供数据;逻辑层(logic)实现用例逻辑。代码示例展示了如何使用allure装饰器增强测试报告,以及如何使用yaml文件进行数据驱动。
651 0
|
Java Spring
动态控制 Spring Boot 中的 @Scheduled 定时任务
Spring Boot 中的 @Scheduled 注解为定时任务提供了一种很简单的实现,只需要在注解中加上一些属性,例如 fixedRate、fixedDelay、cron(最常用)等等,并且在启动类上面加上 @EnableScheduling 注解,就可以启动一个定时任务了。 但是在某些情况下,并没有这么简单,例如项目部署上线之后,我们可能会修改定时任务的执行时间,并且停止、重启定时任务等,因为定时任务是直接写死在程序中的,修改起来不是非常的方便。所以,简单记录一下自己的一些解决方案,仅供参考。
2374 0
|
9月前
|
机器学习/深度学习 数据采集 人工智能
《C 语言与统计假设检验:洞察人工智能模型性能差异》
在人工智能领域,模型性能评估是关键环节。C 语言凭借高效性和强大计算能力,在统计假设检验中发挥重要作用,帮助判断不同模型或参数设置下的性能差异是否显著。通过 t 检验等方法,C 语言能科学地验证模型性能的可靠性,支持模型优化、架构比较及应对数据变化,推动人工智能技术的发展。
214 62
|
10月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
265 2
|
JSON API 数据格式
如何用 Python 的 requests 库发送 JSON 数据的 POST 请求
使用 requests 库发送 JSON 数据的 POST 请求是一个非常简单且实用的操作。通过将目标 URL 和 JSON 数据传递给 requests.post 方法,你可以轻松发送请求并处理响应。本篇文章介绍了从安装 requests 库,到发送 JSON 数据的 POST 请求,再到处理响应的整个流程。希望这篇文章能帮助你更好地理解并应用这个强大的 HTTP 请求库。
|
网络安全 时序数据库
influxdb2.0版本部署+自启
influxdb2.0版本部署+自启
influxdb2.0版本部署+自启
|
XML 开发者 数据格式
开发者社区文章编辑器特殊符号
阿里云开发者社区文章编辑器转义字符输入个别特殊符号会显示异常,需要特殊处理
237 1
开发者社区文章编辑器特殊符号
|
Linux Android开发 芯片
芯片启动:从Bootrom到Linux完整启动流程
芯片启动:从Bootrom到Linux完整启动流程
399 0
|
存储 人工智能 运维
免费公测|阿里云EMR Serverless StarRocks 公测正式开启!
阿里云EMR Serverless StarRocks 免费公测已开启,向所有用户开放!您可通过EMR控制台直接创建实例,轻松体验全托管、免运维的服务。
7973 1
免费公测|阿里云EMR Serverless StarRocks 公测正式开启!

热门文章

最新文章