如何计算下载文件的校验和?

一、什么是校验和?

校验和是对一段数据(通常是单个文件)运行一种称为加密散列函数的算法的结果,英文名:checksum

二、为什么要计算校验和?

用于"检查"数据或文件在存储或传输过程中是否被更改。从网上下载的软件通常附带校验和,这样用户可以确保文件或文件在传输过程中没有被修改。如果来自软件供应商的校验和与计算机上下载的安装文件的校验和匹配,则没有进行任何错误或修改。如果校验和值不匹配,则下载可能已损坏或被黑客破坏。

四、怎么计算校验和?

  • 选择一个适当的哈希函数,例如MD5、SHA-1或SHA-256。
  • 将文件的内容作为输入传递给选定的哈希函数。
  • 哈希函数会计算文件内容的哈希值,并输出一个固定长度的校验和。
  • 把计算出来的结果同原始校验和比较。

五、有哪些算法可以计算校验和

MD5 (Message Digest 5)

它设计于1991年,接受输入并产生128位(即16字节)校验和,显示为32个十六进制数字。它容易受到碰撞等漏洞的影响,不像SHA(安全散列算法)家族那样安全。

SHA-1 (Secure Hash Algorithm-1)

这个哈希算法由NIST(美国国家标准与技术研究所)发布,它接受一个输入,并产生一个160位(即20字节)的输出哈希值,作为校验和。该值显示为40位十六进制字符串,自2005年以来被认为是不安全的。

SHA-2 family (Secure Hash Algorithm-2)

由NIST批准和推荐,它是一个广泛使用的算法家族,包括:

  • SHA-224和SHA-256产生256位(即32字节)校验和,显示为64位十六进制数字输出。

  • SHA-384, SHA-512, SHA-512/224, SHA-512-256 -都生成512位(即64字节)校验和,显示为128位十六进制数字字符串。

SHA-3 family (Secure Hash Algorithm-3)

也包括不同的算法,但基于一种新的加密方法,它们与之前的算法有很大不同:

  • SHA3-224 这产生一个由56个十六进制字符组成的224位(即28字节)校验和。

  • SHA3-256 这将产生一个256位(即32字节)的校验和,显示为64个十六进制字符输出。

  • SHA3-384 这将产生一个384位(即48字节)的校验和,由96个十六进制字符组成。

  • SHA-512 这将生成一个512位(即64字节)校验和,显示为128个十六进制数字输出。

CRC (cyclical redundancy check checksum algorithms) (循环冗余校验和算法)

与"传统"校验和非常相似,它们通常用于错误检测和识别数字网络和存储设备(例如以太网和Wi-Fi数据包)中数据的意外更改。基于循环码,crc使用多项式除法来确定其值。

  • CRC-16 它生成16位(即2字节)的校验和,显示为4个字符的十六进制字符串。

  • CRC-32 它生成32位(即4字节)的校验和,由8个十六进制数字组成。

  • CRC-64 它生成64位(即8字节)的校验和,显示为16个十六进制数字字符串。

六、校验和应用场景

密码存储

只保存密码的校验和值而不是明文密码更安全。这样,在数据泄露的情况下,黑客只会得到一组乱码的十六进制字符串。

保证软件/代码的完整性

防止未经授权的访问和通过修复检查过程进行的数据操作。

恶意软件防护

比较校验和值可确保下载的文档/代码/文件未被损坏或感染恶意软件。

版权图像保护

校验和可以防止第三方通过简单地修改原始图像来使用受版权保护的图像。

电子邮件恶意软件防护

当发件人的加密校验和与收件人的不匹配时,这意味着电子邮件已被篡改(例如,恶意软件已被注入电子邮件的附件)。这是一种识别可疑电子邮件和/或附件的简单而安全的方法。

ISO文件的完整性

在从下载的ISO安装Ubuntu或任何其他操作系统之前,可以在刻录CD或DVD时打开图像校验和选项。这将使您能够与您刚刚创建的CD或DVD中的一个验证下载的ISO的校验和,并帮助您避免安装损坏或感染的ISO。

七、使用电脑附带的工具来计算校验和

Windows

shell 复制代码
CertUtil -hashfile [文件路径] SHA256

或

Get-FileHash [文件路径]

Mac

shell 复制代码
shasum -a 256 [文件路径]

-a 指定算法

Linux

shell 复制代码
sha256sum [文件路径]

八、使用在线工具计算

相关推荐
u60619 分钟前
常用排序算法核心知识点梳理
算法·排序
程序员爱钓鱼1 小时前
Go语言实战案例 — 工具开发篇:实现一个图片批量压缩工具
后端·google·go
蒋星熠3 小时前
Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
开发语言·python·算法·flutter·设计模式·性能优化·硬件工程
ChinaRainbowSea3 小时前
7. LangChain4j + 记忆缓存详细说明
java·数据库·redis·后端·缓存·langchain·ai编程
舒一笑3 小时前
同步框架与底层消费机制解决方案梳理
后端·程序员
minh_coo3 小时前
Spring框架事件驱动架构核心注解之@EventListener
java·后端·spring·架构·intellij-idea
小欣加油3 小时前
leetcode 面试题01.02判定是否互为字符重排
数据结构·c++·算法·leetcode·职场和发展
3Cloudream3 小时前
LeetCode 003. 无重复字符的最长子串 - 滑动窗口与哈希表详解
算法·leetcode·字符串·双指针·滑动窗口·哈希表·中等
王璐WL3 小时前
【c++】c++第一课:命名空间
数据结构·c++·算法
空白到白4 小时前
机器学习-聚类
人工智能·算法·机器学习·聚类