Checksum (hasil tambah semak) ialah nombor yang dikira daripada satu blok data dan dihantar bersamanya. Penerima mengulang pengiraan. Jika nombornya berbeza, blok itu berubah semasa perjalanan, jadi penerima menolaknya.
Soalan meminta anda mengira checksum, membandingkan dua nilai dan menyatakan apa yang kaedah itu boleh dan tidak boleh lakukan. Perkataan yang anda pilih sama penting dengan hasil tambah.
Pelajaran ini datang selepas pariti dalam penghantaran dan semakan data.
Bagaimanakah checksum ringkas berfungsi?
Untuk memudahkan aritmetik, pelajaran ini menggunakan versi pengajaran: tambah nilai, kemudian ambil baki selepas dibahagi 100. Checksum sebenar menggunakan peraturan berbeza, jadi ikut sukatan dan guru anda untuk versi yang perlu diketahui.
- Tambah semua nilai data.
- Ambil hasil tambah MOD 100 untuk mendapat checksum.
- Hantar data dan checksum bersama.
- Penerima mengulang langkah 1 dan 2 pada data yang tiba dan membandingkan.
Contoh berlangkah
Empat nilai data dihantar: 52, 87, 19, 66.
total ← 0
FOR i ← 1 TO 4
total ← total + Data[i]
NEXT i
checksum ← total MOD 100
Jejak:
| i | Data[i] | total |
|---|---|---|
| mula | 0 | |
| 1 | 52 | 52 |
| 2 | 87 | 139 |
| 3 | 19 | 158 |
| 4 | 66 | 224 |
Kemudian 224 MOD 100 = 24. Semak dengan tangan: 52 + 87 = 139, 139 + 19 = 158, 158 + 66 = 224, dan 224 − 200 = 24.
Penerima, kes 1. Blok tiba sebagai 52, 87, 91, 66. Jumlahnya 296, dan 296 MOD 100 = 96. Ini tidak sama dengan 24, jadi penerima mengesan ralat.
Penerima, kes 2. Blok tiba sebagai 87, 52, 19, 66. Jumlah masih 224, jadi checksum ialah 24. Semakan lulus walaupun dua nilai bertukar tempat.
Apakah kesilapan yang dilakukan pelajar?
Ayat lazim: “Checksum menjadikan data selamat, jadi tiada sesiapa boleh mengubahnya.”
Ini salah. Checksum ialah cara untuk mengesan perubahan tidak sengaja. Orang yang mengubah data dengan sengaja boleh mengira checksum baharu dan menghantarnya bersama, jadi penerima melihat padanan. Perkataan yang jujur ialah: “Checksum boleh mengesan banyak ralat tidak sengaja, tetapi ia tidak menghalang seseorang mengubah data dengan sengaja, dan ia boleh terlepas sesetengah perubahan seperti nilai bertukar tempat.”
Semak kendiri
1. Kira checksum (hasil tambah MOD 100) bagi 14, 35, 28, 9.
Lihat jawapan
14 + 35 = 49, 49 + 28 = 77, 77 + 9 = 86. 86 MOD 100 = 86.
2. Checksum penghantar ialah 95 bagi nilai 40, 25, 30. Penerima menerima 40, 25, 31. Adakah semakan lulus?
Lihat jawapan
40 + 25 + 31 = 96, jadi checksum penerima ialah 96. Ia berbeza daripada 95, maka ralat dikesan.
3. Berikan satu sebab checksum bukan ciri keselamatan.
Lihat jawapan
Sesiapa yang mengubah data boleh mengira semula checksum dan menggantikannya, jadi penerima melihat padanan. Ia hanya mengesan perubahan tidak sengaja.
Ke mana selepas ini?
Akhir sekali, asingkan semakan yang hanya menyedari masalah daripada kaedah yang membetulkannya dalam pengesanan lawan pembetulan ralat. Gunakan kotak pasir penaakulan Python selamat untuk menulis gelung hasil tambah dan baki sendiri dan mengujinya dengan nilai di atas. Kemudian cuba set latihan.
Jika anda mahu tahu sama ada ayat jawapan anda cukup tepat untuk markah penuh, guru dalam tuisyen Computer Science satu dengan satu dalam talian boleh menyemaknya.