1 - 校验文件的作用

从网服务器下载文件,尤其是比较大的文件时,很容易由于网络不稳定,导致断点续传发生错误。

那要怎么确保下载文件的正确有效呢?

比较常见的做法是:提供下载服务的网站,在提供真实文件的同时,会提供该文件的校验值,比如 MD5,SHA1,SHA256 等某种格式,下载完文件后,计算它的校验值,如果和网站提供的一致,说明文件未损坏。

关于校验值:

校验值是一组 16 进制数,不区分大小写。

校验值本身只与文件内容有关,只要文件内容不改变校验值就不变,比如拷贝、移动、修改文件创建时间/访问时间、修改文件读/写/执行权限等操作都不会导致校验值发生改变。

2 - Linux 下生成校验文件

(1) 生成校验文件:

# 生成 md5 检验文件,检验文件的名称及后缀可自由定义,但一般情况下与文件名称相同:
md5sum file.tar > file.tar.md5 # 生成 sha1 校验文件:
sha1sum file.tar > file.tar.sha1 # 生成 sha256 检验文件:
sha256sum file.tar > file.tar.sha256

(2) 校验某个文件:

# 以 sha256 为例,需要待校验的文件,以及 sha256 文件:
sha256sum -c file.tar.sha256

如果输出【file.tar: OK】,说明文件校验成功。

3 - Windows 下生成校验文件

(1) Windows 自带了 certutil 工具,支持的算法有:MD2、MD4、MD5、SHA1、SHA256、SHA384、SHA512。

通过 cmd 命令行进入文件所属目录,就可以用 certutil 工具来生成需要的校验文件了:

certutil -hashfile file.zip MD5 >> MD5.txt
certutil -hashfile file.zip SHA1 >> SHA1.txt
certutil -hashfile file.zip SHA256 >> SHA256.txt

(2) 如果你安装了 Git Bash,那还可以使用类似 Linux 的命令:

sha256sum.exe file.zip >> file.zip.sha256

注意:Windows 下的方式 (1) 生成的校验文件,与 sha256sum 工具生成的校验文件不通用:

$ cat Linux.sha256
26088313ed187d6dbaed81601c536ba62c71109862720bc9b5f6eaba03e456de file.zip # Windows 下方式 (2) 生成的校验文件中有一个 * 号:
$ cat Win.sha256
26088313ed187d6dbaed81601c536ba62c71109862720bc9b5f6eaba03e456de *file.zip # Windows 下方式 (1) 生成的校验文件与 sha256sum 工具生成的文件内容明显不一致:
$ cat Win_certutil.sha256
SHA256 ▒▒ FusionInsight_UpdateService_6.5.0to6.5.1_RHEL.tar.gz ▒▒ϣ:
26088313ed187d6dbaed81601c536ba62c71109862720bc9b5f6eaba03e456de
CertUtil: -hashfile ▒▒▒▒ɹ▒▒▒ɡ▒

建议优先使用 Linux 系统下的工具生成校验文件;

若无 Linux 环境,可使用 Git Bash 等工具中的 sha256sum.exe

参考资料

https://blog.csdn.net/qq_28082757/java/article/details/78541581

https://blog.csdn.net/xkwy100/java/article/details/80297968

版权声明

作者:瘦风(https://healchow.com)

出处:博客园-瘦风的南墙(https://www.cnblogs.com/shoufeng)

感谢阅读,公众号 「瘦风的南墙」 ,手机端阅读更佳,还有其他福利和心得输出,欢迎扫码关注

本文版权归博主所有,欢迎转载,但 [必须在页面明显位置标明原文链接],否则博主保留追究相关人士法律责任的权利。

Linux、Windows 下手动生成 sha256 等类型的校验文件的更多相关文章

  1. 如何在Windows中手动生成SSH密钥?(转)

    在Windows上,您可以通过多种方式创建SSH密钥.Windows需要SSH客户端,但在其操作系统上没有默认的SSH客户端.请注意,Windows目前正在测试本机OpenSSH应用程序,一般,不提倡 ...

  2. Ruby入门--Linux/Windows下的安装、代码开发及Rails实战

    Ruby入门--Linux/Windows下的安装.代码开发及Rails实战 http://www.linuxidc.com/Linux/2014-04/100242.htm Ubuntu 13.04 ...

  3. windows下手动安装 Apache+php+mysql

    PHP 为什么先说php,因为apache的配置要写入php的一些路径 http://php.net/downloads.php  选择windows donwload 选择Thread Safe的版 ...

  4. 关于windows下c++生成的exe发布时的依赖dll问题

    如同linux下通常要求安装特定版本的libstdc++一样,windows下vc++生成的exe发布时的依赖dll问题,可以参见帖子,http://bbs.csdn.net/topics/39105 ...

  5. 快速解决Ubuntu/linux 环境下QT生成没有可执行文件(application/x-executable)

    快速解决Ubuntu/linux 环境下QT生成没有可执行文件(application/x-executable)(转载)   问题描述 与windows环境下不同,linux选择debug构建时并不 ...

  6. linux/windows下启用和停止VMware后台服务的脚本

    linux/windows下启用和停止VMware后台服务的脚本 linux/windows下启用和停止VMware后台服务的脚本 linux平台 windows平台 本文由乌合之众 lym瞎编,欢迎 ...

  7. windows下手动安装composer并配置环境变量

    windows下手动安装composer并配置环境变量   转载地址: https://my.oschina.net/7sites/blog/209997 之前发表过一篇如何为composer设置代理 ...

  8. Go交叉编译(Go语言Mac/Linux/Windows下交叉编译)

    Go交叉编译(Go语言Mac/Linux/Windows下交叉编译) 2019/11/21 Chenxin 在很多时候,由于开发的方便,会有这样的场景出现,使用Mac开发或使用Windows开发,需要 ...

  9. .pages怎么在windows上打开?Windows下打开在Mac中编辑的.pages文件方法

    .pages怎么在windows上打开?Windows下打开在Mac中编辑的.pages文件方法 1.最简单的方法是修改后缀名为.zip然后解压,解压后就可以看到一张图片,这个就是文档内容了. 2.更 ...

随机推荐

  1. Java实验项目二——打印某年某月日历

    Program:打印万年历(输入年份,月份,输出该月的日历,已知1900年1月1日是星期一), 要 求: (1)编写一个方法判断闰年: (2)编写一个方法判断某年某月有多少天: (3)编写一个方法计算 ...

  2. ZSH主题

    All the current themes can be found in the themes/ directory in the oh-my-zsh distribution. See list ...

  3. 「CF516D」 Drazil and Morning Exercise

    「CF516D」 Drazil and Morning Exercise 传送门 这个 \(f_i\) 显然可以通过树形 \(\texttt{DP}\) 直接求. 然后看到这种差值问题感觉就可以二分转 ...

  4. Python入门学习指南

    对于初学者,入门至关重要,这关系到初学者是从入门到精通还是从入门到放弃.以下是结合Python的学习经验,整理出的一条学习路径,主要有四个阶段 NO.1 新手入门阶段,学习基础知识 总体来讲,找一本靠 ...

  5. C语言中函数的返回值

    规则 除局部变量的内存地址不能作为函数的返回值外,其他类型的局部变量都能作为函数的返回值. 我总结出下面这些规则: int.char等数据类型的局部变量可以作为函数返回值. 在函数中声明的指针可以作为 ...

  6. 【LeetCode】1248. 统计「优美子数组」

    1248. 统计「优美子数组」 知识点:数组:前缀和: 题目描述 给你一个整数数组 nums 和一个整数 k. 如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」. ...

  7. MySQL 8.x 新版本特性赶紧学!!Linux 服务器上安装 MySQL 8.x

    我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复[资料],即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板. 引言 ...

  8. js之 foreach, map, every, some

    js中array有四个方法 foreach, map, every, some,其使用各有倾向. 关注点一:foreach 和 map 无法跳出循环,每个元素均执行 foreach 和 map 无法跳 ...

  9. 货币兑换问题(动态规划法)——Python实现

      # 动态规划法求解货币兑换问题 # 货币系统有 n 种硬币,面值为 v1,v2,v3...vn,其中 v1=1,使用总值为money的钱与之兑换,求如何使硬币的数目最少,即 x1,x2,x3... ...

  10. 添加xxx到右键菜单

    1. 添加notepad++到右键菜单[1] 添加到 右键菜单 将以下内容保存为 OpenWithNotepad++.reg 文件,双击运行即可(其中可执行文件路径和菜单项名称请自行替换): 注: 下 ...