做一名合格的程序员从了解checksum开始

超级欧派课程 2024-05-29 06:36:42

想象一下,你正在通过邮寄发送一封重要的信。

在封信之前,你拍下了信的照片。

当收信人收到信后,他们也拍下信的照片并寄回给你。

如果两张照片匹配,你就知道这封信在传送过程中没有被篡改或损坏。

如果不匹配,很明显是途中出了问题——可能信被篡改了,或者部分内容丢失或损坏。

在数字世界中,校验和起到了类似照片的作用。

就如同拍照可以帮助我们回答"这封信是否被篡改或损坏“这样的问题,校验和可以帮我们回答:"这个数据是否在创建、储存或传输之后无意或恶意地被改动过?"

在本文中,我们将探索校验和,包括其目的,不同的类型,以及如何保护我们的数据安全。

什么是 Checksum?

Checksum 是在数据被传输前附加到数据上的唯一指纹。在数据到达接收方后,这个指纹会被重新计算以确保它与原始指纹匹配。

如果一块数据的 checksum 与预期值匹配,你就可以确信这个数据没有被修改或损坏。

checksum 通过在数据上执行数学运算来计算得到,例如对所有的字节进行相加或通过密码散列函数运算。

Checksum - Wikipedia

来源: https://en.wikipedia.org/wiki/Checksum

Checksum 的工作原理是什么?

使用 checksum 进行错误检测的过程十分直观:

计算:在发送或存储数据之前,原始数据会经过特定的算法产生一个 checksum。传输/存储:checksum 会被添加到数据末尾并被发送经网络或保存到存储设备中。验证:在接受或提取数据时,会使用相同的算法重新计算接受到的数据的 checksum。新计算得到的 checksum 会被与原始 checksum 进行比对。错误检测:如果两个 checksum 值匹配,就认为数据完整无损。如果不匹配,就说明在传输或存储过程中数据被改动或损坏了。Checksum 的类型有哪些?

有许多不同类型的 checksum,每种都有其自己的优点和缺点。以下是一些最常见的类型:

奇偶位:奇偶位是添加到一串比特中的单个比特,使得 1 的总数为偶数(偶校验)或为奇数(奇校验)。尽管它可以检测到单比特错误,但如果有偶数个比特被翻转,它就无法检测到了。CRC(Cyclic Redundancy Check):CRC 通过把数据视为一个大的二进制数并通过一个预定的除数来除它。除法的余数就成为了 checksum。CRC 是为了能检测出因传输通道中的噪声导致的常见错误而设计的。加密散列函数:这是一种单向函数,它能从数据中生成一个固定长度的散列值。比较流行的有 MD5、SHA-1 和 SHA-256。Checksum 的实际应用

文件下载:Checksum 能验证下载的文件是否完整且无损。数据备份:Checksum 保证了备份数据的准确性和可靠性。网络通讯:Checksum 保证了数据包能够正确地传输,防止了错误和损坏。总结一下

checksum 作为一道重要的防线,保护了我们的数据免受错误和损坏的影响。

从文件下载、数据存储,到网络传输和软件安装,Checksum 能够持续不断地检测错误、防止损坏,让我们对数字信息的准确性有信心。

0 阅读:108
评论列表
  • 2024-06-10 23:16

    好像说了什么 其实啥都没有说

超级欧派课程

简介:感谢大家的关注