首页 > 其他分享 >如何计算下载文件的校验和?

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

时间:2024-03-17 20:55:26浏览次数:27  
标签:文件 字节 十六进制 校验 SHA 256 下载

一、什么是校验和?

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

image

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

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

四、怎么计算校验和?

  • 选择一个适当的哈希函数,例如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

CertUtil -hashfile [文件路径] SHA256

或

Get-FileHash [文件路径]

Mac

shasum -a 256 [文件路径]

-a 指定算法

Linux

sha256sum [文件路径]

八、使用在线工具计算

image

标签:文件,字节,十六进制,校验,SHA,256,下载
From: https://www.cnblogs.com/TangQF/p/18079155

相关文章

  • 爬取汽车之家:基于selenium和request自动获取汽车信息并保存到CSV文件matplotlib和seab
    在网络时代,信息获取变得越来越重要,而Python作为一门强大的编程语言,其爬虫技术可以帮助我们自动获取互联网上的各种信息。今天,我们将学习如何使用Python编写爬虫程序,自动获取汽车信息,并将这些信息保存到CSV文件中。1.引入必要的库首先,我们需要引入一些必要的库,包括csv用于......
  • 用友NCCloud FS文件管理SQL注入
    用友NCCloudFS文件管理SQL注入用友NCCloudFS文件管理登录页面对用户名参数没有过滤,存在SQL注入。Fofa:"/platform/yonyou-yyy.js"、app="用友-NC-Cloud"&&icon_hash="1596996317"nccloud登录界面:文件服务器管理登录页面:http://x.x.x.x/fs/username参数存在注入,......
  • “我的文档”文件夹的配置
      概要“我的文档”文件夹是用户配置文件的一个组件,可用作存储个人数据的统一位置。默认情况下,“我的文档”文件夹是用户配置文件中用作保存的文档的默认存储位置的文件夹。如果您是管理员,则可以在组策略中使用文件夹重定向来修改“我的文档”的位置以驻留在网络共享中。当用......
  • 如何通过web前端下载付费音乐(以qq音乐为例)
    tips:如今通过这个方式在qq音乐官网只能下载一部分啦!也就是比如试听多久,咱们就能下载多久的音乐时长,试听一分钟就只能下载一分钟!当然你去一个可以全部试听的音乐网站用这方法是可以全部下载的哦!演示PC的操作系统是windows!1.登录qq音乐官网https://y.qq.com/1.1登录自己的qq音......
  • Linux开发:open打开文件
    open是Linux中最常用的系统调用(原子操作),用于获取一个访问文件或设备的文件描述符。#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>intopen(constchar*pathname,intflags);intopen(constchar*pathname,intflags,mode_tmode);可以看到open......
  • Linux开发:通过sendfile高效的拷贝文件数据
    如果想要将一个文件的内容拷贝到另一个文件中,常规的做法是读取源文件,然后再把内容写入到目的文件中:#include<fstream>#include<iostream>#include<string>#include<vector>usingnamespacestd;vector<string>readFile(conststring&filename){vector<stri......
  • win10-我的电脑隐藏不需要的文件夹
    我的电脑默认会像下面显示红框内的内容使用频率很低,故想隐藏掉。方法如下:新建一个文本文件,内容如下WindowsRegistryEditorVersion5.00 [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{088e3905-0323-4b02-9826-5d99......
  • Visual Studio Code中Python安装库文件遇到的问题
    不知道怎么安装库文件,在网上搜索出来好多都是VS2019版本,与现在的2023版本界面不太一样,但是还是可以通过pip安装,之前换过国内的源(现在已经忘了,果然不记录光靠脑子是不行的),用的是清华的源下载速度还可以。安装xlwt库时成功,但是安装BeautifulSoup库时报错,×Gettingrequirement......
  • 使用 gdb 查看 coredump 文件的 backtrace
    问题背景程序退出过程中卡死,但是一旦开启log就无法复现问题。于是考虑获取程序卡死时的coredump文件,分析其调用栈。一种方法是在程序卡死时,用kill命令向其发送一个信号,使程序产生coredump文件。前提Target上可以产生core文件(如/tmp/<executable-name>-<pid>.core),......
  • 使用Servlet实现文件下载
    一位朋友最近在学习JavaWeb开发,开始学习文件下载操作,他自己尝试着去网上看一些教程,总的来说也不是太了解,就让我和他说说,如何实现文件下载功能。我和他说了一下大致的思路,主要分为前端和后端两部分来实现文件下载操作。后台Java代码实现思路:.1.读取文件信息;.2.设置返回数据......