在计算机领域,特别是在网络安全范畴,校验和是一个经常出现的术语。它之所以被广泛提及,主要是因为校验和仍然是评估数据批次或单个项目是否与特定标准匹配,或是否在传输或存储过程中被修改的一种可靠方法。
如果您曾从各种网站下载过开源材料,可能已经注意到,有些网站会自豪地显示校验和值,并建议您检查下载文件的校验和是否与网站上提供的值一致。如果您对这些看起来随机的字母数字字符串感到困惑,本文将为您解开谜团。
什么是校验和?
从技术角度来看,校验和是从另一个数据块衍生出来的一小段数据,其主要目的是执行检查并检测数据在存储或传输过程中是否发生错误。简而言之,它是一个小型的指示器,可以帮助我们判断原始数据是否被修改过。
校验和的生成并非随意,它实际上是通过一种称为校验和函数的操作创建的。您也可能将其称为校验和算法。不同的算法设计可能有所不同,但一个有效的校验和算法应该能够输出明显不同的值(校验和),即使输入数据只有微小的改变。不论文档或数据的类型如何,这一点都应该成立。
校验和的作用
校验和通常用于执行各种文件的数据完整性检查。例如,如果开发者创建了一个程序,他会生成该程序的校验和并将其发布在网站上。当您下载该程序到电脑后,您可以自行计算下载文件的校验和,并与网站上发布的值进行比较,以确认是否一致。
如果当前文件或数据的校验和与之前计算并存储的值不同,这表明输入数据已经被篡改。反之,如果当前数据的校验和与之前计算的值匹配,那么数据很可能没有被修改或损坏,无论是意外还是人为造成的。
不同类型的校验和算法
校验和算法如同密码算法一样,存在多种类型,每种类型都可能更适合特定的用途。以下列出几种最常见的校验和算法,并对其进行详细解释,以便您更有效地理解其概念。
如果您不精通技术,或不喜欢技术细节,建议您可以跳过关于常用校验和算法的解释部分,直接阅读关于如何使用校验和验证文件的说明。
奇偶校验字或奇偶校验字节
我们从最简单的校验和算法开始:纵向奇偶校验。该算法的工作方式是将数据分割成具有固定位数(n)的字,然后计算所有这些字的“异或”(XOR)。计算结果将作为额外的字添加到消息中。
为了检查消息的完整性,接收方会计算包括校验和在内的所有字的异或值,并检查结果是否为一个由(n)个零组成的字。如果是,则表示数据完整;如果不是,则表明传输过程中发生了错误。
尽管奇偶校验字/字节算法是最简单的校验和算法,但其效率并不高。如果传输错误以影响输入数据的单个位或奇数位的方式发生,该算法可以检测到不正确的校验和。然而,如果错误同时影响两个不同字中的相同位置,或交换了两个或多个字,则该算法无法检测到错误,这可能导致误认为一切正常,而实际上并非如此。在随机选择受影响位的情况下,检测到两位错误的概率为 1/n(n 为固定位数)。
和补码
为了改进奇偶校验算法的缺陷,引入了和补码算法。与奇偶校验算法不同,和补码算法将所有“字”作为二进制无符号数相加,并丢弃所有溢出位,然后将和的补码作为校验和。
为了验证消息,接收方需要像纵向奇偶校验算法一样,将所有字(包括校验和)相加。如果结果字符串不是全零字,则强烈指示在传输过程中发生了错误。然而,该算法也只能检测单比特错误。模数和是SAE J1708 使用的技术。
位置相关
位置相关的校验和算法旨在解决上述两种算法的缺陷,因为它们无法准确检测出发生在多个位上的常见错误。例如,插入或删除所有位都设置为零的字,以及更改数据字的顺序。
位置相关校验和算法通过检查输入中每个字的值及其在序列中的位置来解决这些问题。通过考虑多个参数,位置相关的校验和函数增加了校验和的计算成本。Adler-32、循环冗余校验(CRC)和Fletcher校验和算法是位置相关校验和算法的例子。
模糊校验和
模糊校验和算法主要用于检测垃圾邮件。它通过生成来自多个ISP的协作数据库来实现。这些数据库包含可疑或被报告为垃圾邮件的电子邮件。
由于每封垃圾邮件的内容可能差异巨大,传统的校验和算法在这种情况下不适用。模糊校验和算法可以将邮件正文简化到最小,然后照常计算校验和。这种方法能够增加略微不同的邮件生成相同校验和的机会。目前,有一些集中服务(例如DCC)可以接收来自合作ISP提交的垃圾邮件检测软件检测到的所有邮件的校验和。
如果提交的模糊校验和的计数超过特定阈值,数据库就会将该提交标记为潜在的垃圾邮件。
如何使用文件校验和?
如果您重视计算机安全,并了解从非可信网站随意下载文件的风险,您可能希望在下载或复制文件之前使用校验和验证其完整性,以避免潜在的危害。
值得注意的是,任何来源都可能受到威胁,精心伪装的攻击可能会让您误以为正在从可信的官方来源下载文件。因此,确保您下载的文件是正确的对于计算机安全至关重要。
1. Windows
Windows 没有内置的图形界面校验和工具,您需要使用其CMD工具或下载具有用户友好界面的第三方工具。建议使用后者,尤其是在您之前没有数据完整性验证和校验和使用经验的情况下。
本文将使用IrfanView,这是一个广受欢迎的免费图像查看器,您可能已经听说过,甚至已经在电脑上安装了。前往IrfanView的下载页面,注意每个版本下面,您可以从官方网站下载的链接下方,可能会有一些看起来有点混乱的信息。
找到类似下面这样的行:
(SHA-256 校验和:6a67f079f8036a30e9e13fd9baecf0d37da18106050880a3f12845e445f8786f)
暂时记住它。稍后,我们将回到此指导指南中。现在,下载任何版本的IrfanView,但请注意下载链接下方的奇怪行。
1. 使用certutil
下载IrfanView
按下键盘上的 Win + R 组合键
输入CMD,然后按下键盘上的Enter键
在CMD中,使用CD命令访问IrfanView的下载文件夹
输入以下命令,但将FILE替换为您要进行完整性检查的文件(包括其扩展名),将HASH替换为开发者指定的算法(在本示例中为SHA256)
certutil -hashfile 文件哈希
按下键盘上的Enter键
检查两个校验和是否一致。
如果出现错误,这两个校验和(官方校验和和您使用 certutil 计算的校验和)几乎不可能完全相同。如前所述,输入文件中的任何更改都应生成完全不同的校验和。然而,如果出现异常,最好确保安全,检查您的校验和是否与网站上的校验和完全一致。
如果两个校验和一致,恭喜!您的文件是100%完整的,这意味着您已下载与网站上当前托管的文件完全相同的副本,可以安全地将其存储在您的电脑上或安装(如果适用)。
请注意,certutil 可以使用 SHA256 以外的多种哈希算法,包括 MD2、MD4、MD5、SHA1、SHA384 和 SHA512。如果哈希类型与 SHA256 不同,请将其更改为官方文件所有者/创建者使用的哈希类型。
2. 使用MD5校验和工具
MD5 Checksum Tool 是一款免费软件解决方案,旨在帮助您计算文件哈希,无需任何经验或专业技能。您只需安装该程序,选择一个文件,然后让它完成所有工作。
此外,该程序还具有批量处理功能,可以同时检查多个文件的完整性,并支持多种哈希算法。它还包含一个组件,无需打开文件即可直接将其与校验和进行比较。
您可以使用任何其他适合的第三方工具来代替 MD5 Checksum Tool。如果您想坚持使用我们推荐的工具,请从可信来源找到该程序的工作版本,并按照以下步骤进行操作:
在您的计算机上下载 MD5 Checksum Tool
运行刚刚下载的安装程序可执行文件
按照屏幕上的说明和提示在您的电脑上安装该应用程序
启动 MD5 Checksum Tool
单击文件框旁边的 … 按钮
导航到您下载IrfanView的文件夹
双击 IrfanView 安装程序可执行文件以将其加载到 MD5 Checksum Tool 中
单击 Hash 按钮
请注意,所有字段都已填充字符串
检查列表中与IrfanView网站上显示的哈希值匹配的哈希值
如果您不想花时间检查哈希中的每个字符是否与网站上显示的校验和匹配,MD5 Checksum Tool 提供了一种更简单的方法来执行此操作。但此技术仅适用于MD5哈希,在我们的示例中不起作用。按照以下步骤成功地将文件与已知校验和进行比较:
启动 MD5 Checksum Tool
导航到 Comparison Tool
在第二个(下方)字段中,按下 … 按钮
导航到保存要检查的文件的位置
双击该文件将其加载到MD5 Checksum Tool 中
在下面的字段中复制已知的MD5哈希值
点击 Compare 按钮
如果加载的文件的MD5哈希值与您粘贴在下面字段中的不同,MD5 Checksum Tool 会通知您。这表明您正在使用文件的不同版本,可能是被篡改过的版本。
MD5 Checksum Tool 也允许您以相同方式相互比较两个文件。但是,您应使用第一部分,而不是比较选项卡的第二部分。一旦两个文件都已加载,点击“比较”按钮。如果您的文件相同,MD5 Checksum Tool 会通知您,否则也会通知您。
如您所见,MD5 Checksum Tool 与许多其他带图形用户界面 (GUI) 的第三方校验和工具类似,为验证计算机上文件的完整性提供了一种用户友好、简化的方法。 但它在某些方面也存在局限性,例如无法将文件与SHA-256校验和进行比较。
3. 使用 FCIV
除了使用 certutil CMD 工具,Microsoft 还发布了一个名为 FCIV(文件校验和完整性验证器)的 CMD 工具。尽管它是由 Microsoft 开发的CMD工具,FCIV 默认情况下在任何版本的 Windows 上都不可用,您需要自行安装。该工具可能已经过时,并且设计用于旧版本的Windows操作系统。 最新版本的FCIV于2004年12月发布。
如果您决定在您的电脑上查找、下载并安装FCIV,并返回这里继续使用它。 您可以使用 FCIV 立即检查文件的完整性:
按下键盘上的 Win + R 组合键
输入CMD,然后按下Enter键
在CMD中,输入以下命令,但将FILENAME替换为您要检查的实际文件(包括扩展名):
按下键盘上的 Enter 键
如果一切正确,您应该会看到被扫描文件的两个哈希值:一个 MD5 和一个 SHA-1。这正是使用FCIV的问题所在,以及为什么几乎没有人再使用它的原因,因为它已经过时,并且只支持MD5和SHA-1作为其算法。您最好使用MD5 Checksum Tool 或 certutil 工具。
苹果电脑
如果您使用过Mac,您可能知道它的终端,并且清楚它的功能。Mac有一个类似CMD的控制台,称为终端。
1. 使用终端
终端可以通过多种方式为您提供帮助。它内置了各种工具,即使默认情况下不包含,也可能会有人开发出方法,为其添加更强大的功能。 终端有一个内置工具,您可以用它来生成校验和,并与现有的校验和进行比较。
如果您想验证 Mac 上的文件校验和,请按照以下步骤操作。本演示中使用了IrfanView的安装程序可执行文件,因为它还在下载链接下方提供了一个校验和。其他开发者(如Ubuntu)在单独的文本文档中提供校验和,您可以下载后打开并检查值。这只是增加了额外的步骤。
首先,下载IrfanView安装程序可执行文件(或您已知校验和的另一个文件)。
在Mac上,单击放大镜图标(右上角)
在搜索字段中键入“终端”
从结果列表中选择终端选项(应为第一个结果)
使用终端中的cd(更改目录)命令导航到下载文件的文件夹(如果将文件保存在下载文件夹中,则使用cd 下载)
进入保存文件的文件夹后,在终端中输入以下命令,但将HASH替换为哈希类型(在示例中为256),将FILENAME替换为文件名,包括扩展名(我们的文件是iview457_x64_setup.exe)
shasum -a 哈希文件名
您的命令应类似于 shasum – a 256 iview457_x64_setup.exe
检查终端窗口的下一行是否有校验和(应该会显示)
将终端窗口中的校验和与已知的校验和进行比较(例如,如果使用我们的示例,则为IrfanView网站上的校验和)。
Mac的终端支持多种哈希算法。 以下是可以用来计算校验和的算法,以及您必须在终端中输入的命令。将FILENAME替换为您正在计算校验和的文件(包括扩展名):
MD5:
SHA1
SHA256
SHA384
SHA512
如果终端计算的校验和值与官方网站上的值不同,则表示下载的文件在传输过程中被篡改或损坏。有时,下载过程中的中断可能会导致文件损坏,从而导致不同的校验和。 您可以尝试再次下载文件,并查看校验和是否仍然不同。 如果发布文件的实体更新了文件并忘记发布新的校验和,也可能会出现您认为内容被篡改的情况,但实际上并没有。
2. 使用第三方应用程序
如果您不喜欢终端,可能更愿意使用 Mac App Store 查找第三方实用程序。我们找到了一款名为 Checksum Utility 的应用程序,售价为 1.99 美元。
支付应用费用后,通过Mac App Store 将其下载并安装到您的设备上,然后启动它。它具有一个非常简单的界面。该应用程序的目的是告知您存储介质上文件的完整性。
根据 Mac App Store 官方产品页面,您可以使用 Checksum Utility 来查看备份文件是否正常工作,通过将原始文档与备份进行比较;将文件与其旧校验和进行比较,以查看硬盘是否损坏;以及比较重要文件及其副本,以检查RAM是否未损坏。
与Mac终端不同,Checksum Utility支持更多校验和算法。 支持的算法有:CRC 32、MD5、SHA 1、MD2、MD4、SHA 2:SHA 224、SHA 256、SHA 384和SHA 512。此外,您可以使用该应用程序将计算的校验和保存为.checksum文件以供后续使用。
您可以使用Checksum Utility 执行更多操作,例如比较 .checksum 文件、存储中的文件,以及手动输入的校验和值。如果您已经有一个校验和,但不确定它使用什么算法生成,校验和实用程序可以帮助您轻松识别。
缺点是,校验和实用程序无法计算和比较文件夹中包含的所有文件的校验和,因此您只能计算和比较单个校验和。如果您需要批量计算和比较校验和,可以在 Mac App Store 中找到 Checksum Folders 应用程序。
Checksum Utility 不仅比 Mac 终端更易于使用,而且还提供了许多附加功能,例如校验和比较(按文件、按.checksum文件和手动输入的任何组合)、算法识别工具,以及将计算的校验和保存为设备上的.checksum文件的功能。
Linux
如果您是一位经验丰富的 Linux 用户,您可能已经了解校验和的所有知识。如果您是新手,以下几节将向您介绍如何在 Linux 计算机上计算和比较校验和。
Linux 主要依赖其命令行界面(CLI),尽管也有许多基于GUI的应用程序可供选择,但CLI通常更好。 我们将向您展示如何使用终端和第三方工具计算校验和。
这些说明和第三方工具适用于 Ubuntu 操作系统。 它们可能无法在其他 Linux 操作系统上运行,因为不同的操作系统具有不同的指令集。
1. 终端
如果您决定拥抱 Linux 的精髓,您必须掌握终端,因为它是在此操作系统上可能遇到的最强大的工具之一。有人说,使用Linux终端就像在计算机游戏中作弊一样。他们说的没错。
虽然终端允许您在计算机上执行几乎所有操作,但它没有像 Windows 那样多的故障保护。如果您不确定终端命令会执行什么操作,切勿尝试运行它。
您需要了解的是,Linux 为每个校验和算法提供了不同的命令,一旦您掌握了它们,它们就很容易记住。 每个命令及其支持的算法如下:
MD5 – md5sum – 用于计算 MD5 校验和
SHA-1 – sha1sum – 用于计算 SHA-1 校验和
SHA-256 – sha256sum – 用于计算 SHA-256 校验和
SHA-224 – sha224sum – 用于计算 SHA-224 校验和
SHA-384 – sha384sum – 用于计算 SHA-384 校验和
SHA-512 – sha512sum – 用于计算 SHA-512 校验和
如果您已经熟悉了 Linux 终端可以处理的不同类型的哈希值,现在是时候学习如何计算下载文件的校验和了。为了简单起见,可以下载IrfanView,因为它允许您在官方下载页面上的每个超链接下查看官方校验和。请随意下载本教程所需的任何文件,只要您还可以访问原始文件的校验和。
为了使用终端在 Linux (Ubuntu) 中计算文件的校验和,您必须执行以下操作:
按下键盘上的Win键
输入“终端”
从结果列表中选择“终端”
使用 CD 命令导航到下载文件的文件夹(通常使用“cd 下载”即可)
输入以下命令来计算文件的校验和,但请确保将FILENAME替换为实际文件名(包括扩展名)
sha256sum 文件名
该命令应类似于 sha256sum iview457_x64_setup.exe
如果您的文件使用不同的哈希算法,请使用我们在上面发布的任何其他命令。
专业提示:您可以使用文件管理器(Files)导航到下载文件的目录,然后使用Shift + 右键单击该目录内的任何空白区域,并选择“在终端中打开”上下文菜单。这使您可以跳过使用 CD 命令导航到正确的目录。
运行命令后,您应该可以在终端窗口中看到显示在命令下方的哈希值。将其与原始文件的哈希值进行比较。如果哈希值相同,则表明文件未被篡改,在传输过程中也没有损坏。 如果您发现任何差异,请删除该文件,因为它可能已被篡改,并且可能携带恶意软件。
2. 使用第三方应用
终端可能有点吓人。 您可以使用第三方应用程序来计算校验和。这些应用程序需要以某种方式安装,可以使用终端进行安装。 用于计算校验和的一个工具是GtkHash,它易于安装,易于使用,并支持多种哈希函数。 以下说明适用于 Ubuntu,但也可能适用于其他基于 Debian 的 Linux 发行版。在继续操作之前,请确保您拥有超级用户(管理员)帐户。
按照以下步骤在您的 Ubuntu 计算机上安装 GtkHash:
按下键盘上的Win键
输入“终端”
单击结果列表中的终端图标以启动终端实例
在终端中输入以下命令:
sudo apt-get install gtkhash
这将从存储库中获取安装文件,并立即将它们安装到您的计算机上。
安装 GtkHash 后,通过找到其图标或在终端中键入 GtkHash 来启动它。
如果通过终端启动,必须保持终端窗口打开,因为关闭它也会终止 GtkHash
接下来,配置要使用的算法:
转到GtkHash的编辑菜单
从组合菜单中选择“首选项”
检查您要使用的算法(默认选择MD5、SHA1 和 SHA256)。
您可以根据需要添加更多算法。这是该应用程序支持的所有哈希函数的列表:
MD2
MD4
MD5
MD6-224
MD6-256
MD6-384
MD6-512
SHA1
SHA224
SHA256
SHA384
SHA512
RIPEMD128
RIPEMD160
RIPEMD256
RIPEMD320
虎128
虎160
虎192
漩涡
哈维尔128-3
哈维尔160-3
哈维尔192-3
哈维尔224-3
哈维尔256-3
GOST
SNEFRU 128
SNEFRU 256
CRC32
阿德勒32
以下是如何使用 GtkHash 计算文件哈希值:
启动 GtkHash
单击文件字段中的文件形图标
导航到要计算校验和的文件
双击该文件将其加载到 GtkHash
单击 GtkHash 主窗口中的 Hash 按钮(右下角)
检查您的哈希值是否与网站上的值相同(或与您单独文件中的值相同)。
如果哈希值相同,则表示下载的文件在发布和到达您的电脑之间没有被修改或损坏。 如果发现哈希值不同,我们建议您尽快删除该文件。请注意,GtkHash 主窗口的宽度可能较小,这意味着某些哈希值可能无法完全显示。 您可以调整程序主窗口的大小或复制校验和并将其粘贴到其他应用程序中。如果您无法在 GtkHash 中找到正确的算法,请打开“首选项”窗口并启用更多的哈希函数。
GtkHash 只是您可以使用的第三方应用程序的一个示例。 您可以尝试其他应用程序。
校验和——结论
总而言之,校验和对于检查数据的完整性至关重要,它适用于广泛的领域,包括但不限于电子邮件、密码、下载的文件,甚至 RAM/HDD 故障排除。每个操作系统在计算和比较校验和方面都有其独特性,因此,如果您在 Linux、Mac 或 Windows 计算机上计算校验和时遇到困难,请查阅本文的说明。如果您发现计算出的校验和与原始校验和有任何差异,则始终应将其视为潜在的入侵或损坏问题。