TABLE OF CONTENTS

  1. 概述
  2. 使用
  3. 总结

网站上一些资源下载页面列表中,通常提供了一些Hash值,但自己没想过有什么用,最近有时间简单研究了下,其实目的是确保资源的完整性,避免下载过程中损坏或者被恶意攻击者替换。

概述

哈希算法通常通常用来校验文件的完整性,在密码学中,一般来说,不同的内容生成的Hash值不同(Hash碰撞的概率极低,可以认为),而相同的内容进行哈希后,得到唯一的Hash值。因此通过校验资源传输前后的Hash值,判断资源是否被篡改。

常见的Hash算法有:md5, sha1, sha256(推荐), sha512

使用

网上资源的Hash值通常会在下载资源网站给出hash校验和,资源下载完全后,根据给定的hash算法计算hash值,与网站提供的hash校验和比对即可,相同则文件完整。
下面分别展示在不同操作系统的一些API:

Windows

1
2
# Hash算法可以根据实际替换,支持SHA256、SHA1、MD5
Get-FileHash 文件名.exe -Algorithm SHA256

以下载Jellyfin作为示例:

对比两个Hash值一致,说明下载文件完整。

Linux/Git bash

1
2
3
4
md5sum 文件名
sha1sum 文件名
sha256sum 文件名
sha512sum 文件名

总结

这个知识点很简单,平常时我们工作也经常通过hash算法来作消息摘要,密码存储,签名,这些都属于密码学的范畴,而这个校验资源传输前后的完整性也是其中一个应用而已,一些下载软件、压缩软件本身也内置了对文件完整性的校验,思想是相同的,想到某位大佬说的一句话:对于程序员来说,最为重要的知识其实是核心设计原则以及对计算机体系的理解,有了切身体会。

声明:本站所有文章均为原创或翻译,遵循署名 - 非商业性使用 - 禁止演绎 4.0 国际许可协议,如需转载请确保您对该协议有足够了解,并附上作者名 (Tsukasa) 及原文地址