跳到正文
IGCSE·Tuition
计算机科学 · 课程

使用校验和例子而不夸大其安全性

校验和感觉比奇偶校验强大,所以很容易把它说成是保护数据安全的办法。

本页内容
  1. 简单的校验和怎么运作?
  2. 例题详解
  3. 学生常犯什么错误?
  4. 自我检测
  5. 下一步

**校验和(checksum)**是根据一块数据计算出的数字,并随数据一起发送。接收方重复这个计算。如果数字不同,这块数据在传输中就变了,接收方会拒收。

题目会要求你计算校验和、比较两个数值,并说明这个方法能做什么、不能做什么。你选择的措辞,和计算本身同样重要。

这一课接在奇偶校验之后,同属数据传输与校验。

简单的校验和怎么运作?

为了让算术简单,本课用教学版本:把数值相加,再取除以 100 后的余数。真实的校验和使用不同的规则,所以请按照大纲和老师要求你掌握的版本为准。

  1. 把所有数据值相加。
  2. 对总和取 MOD 100,得到校验和。
  3. 把数据与校验和一起发送。
  4. 接收方对收到的数据重复第 1、2 步,然后比较。

例题详解

发送四个数据值:52, 87, 19, 66。

total ← 0
FOR i ← 1 TO 4
   total ← total + Data[i]
NEXT i
checksum ← total MOD 100

追踪:

iData[i]total
开始0
15252
287139
319158
466224

然后 224 MOD 100 = 24。手算检查:52 + 87 = 139,139 + 19 = 158,158 + 66 = 224,224 − 200 = 24。

**接收方,情况 1。**数据块以 52, 87, 91, 66 到达。总和是 296,296 MOD 100 = 96。这不等于 24,所以接收方检测到错误。

**接收方,情况 2。**数据块以 87, 52, 19, 66 到达。总和仍是 224,所以校验和是 24。即使两个数值互换了位置,校验也通过了。

学生常犯什么错误?

常见说法:“校验和让数据变得安全,所以没人能改它。”

这是错的。校验和是用来发现意外改动的方法。蓄意改动数据的人可以算出新的校验和一并发送,接收方就会看到吻合。诚实的表达是:“校验和能发现许多意外错误,但不能阻止有人蓄意改动数据,而且可能漏掉某些改动,例如数值互换。”

自我检测

1. 计算 14, 35, 28, 9 的校验和(总和 MOD 100)。

查看答案

14 + 35 = 49,49 + 28 = 77,77 + 9 = 86。86 MOD 100 = 86。

2. 发送方对 40, 25, 30 得到的校验和是 95。接收方收到 40, 25, 31。校验通过吗?

查看答案

40 + 25 + 31 = 96,所以接收方的校验和是 96,与 95 不同,因此检测到错误。

3. 给出校验和不属于安全功能的一个理由。

查看答案

任何改动数据的人都可以重新计算校验和并替换,接收方就会看到吻合。它只能发现意外的改动。

下一步

最后,在错误检测与错误纠正中,把只能发现问题的校验方法和能修复问题的方法区分开来。你可以用安全的 Python 推理沙盒自己写出求和取余的循环,并用上面的数值测试。然后试试练习题。

如果你想知道自己评价类答案该怎么写,一对一线上计算机科学补习能给你这样的关注。

常见问题

什么是校验和(checksum)?

校验和是根据一整块数据计算出来的数值,并随数据一起发送。接收方根据收到的数据重新计算,再进行比较。如果两个数值不同,数据在传输中就被改变了。真实系统使用比这里的简单求和更复杂的算法。

校验和能保护数据不被黑客篡改吗?

不能。任何改动数据的人都可以重新计算校验和并替换,接收方就会看到吻合。校验和设计用来发现线路噪声之类的意外改动。要防止蓄意篡改,需要加密和数字签名等其他工具。

校验和比奇偶校验更好吗?

它覆盖整块数据而不是一个字节,简单求和能发现许多奇偶位会漏掉的单一改动。但它仍有缺口,例如两个数值互换位置时。把它当作更强的校验,而不是完美的校验。

更新于:

下一步

如果你想请人看看你怎样写出一种校验能做什么、不能做什么,一对一的老师可以批改并帮你把表达磨得更准确。

一小时付费试听课,按所安排老师确认的收费,RM80 起。 其他费用、时间安排及后续课程,在试听课后由家长与老师直接确认。

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

是家长或监护人?在这里咨询

已通过我们的服务帮助 9,000+ 名学生