① 校验和(Checksum)
- 原理:把所有字节加起来(可能取低 8 位 / 16 位),作为校验值。
- 优点:实现极其简单,计算快,资源消耗小。
- 缺点:检测能力有限(部分错误无法发现,例如两个字节互换位置)。
- 应用场景:
- 早期的 TCP/IP 头部校验(16 位补码和)。
- 很多低功耗传感器的自定义协议。
② 异或校验(XOR Check)
- 原理:把所有字节逐个异或,得到一个校验字节。
- 优点:实现更快更简单,比普通和校验稍强。
- 缺点:依旧检测能力有限,不能发现很多错误。
- 应用场景:
- 工业仪表、RS485 自定义协议。
- 传感器模组的简易数据帧。
③ CRC(循环冗余校验)
- 原理:把数据看作一个二进制多项式,用生成多项式进行模 2 除法,余数就是 CRC。
- 优点:检测能力强(能检测突发错误、位翻转)。
- 缺点:实现稍复杂,但现在硬件/软件库都很成熟。
- 常见变体:
- CRC8 → 一些轻量物联网协议(比如 I²C 设备通信)。
- CRC16-IBM / CRC16-Modbus → Modbus、蓝牙 BLE。
- CRC32 → 文件传输(MQTT 的部分实现、以太网帧)。
④ 哈希校验(Hash-based)
- 原理:对数据做哈希(MD5、SHA-1、SHA-256)。
- 优点:能防止篡改,安全性强。
- 缺点:计算量大,低功耗 MCU 上不一定合适。
- 应用场景:
- OTA 升级包校验(MD5/SHA256)。
- 设备与云端的数据完整性验证。
⑤ 消息认证码(MAC / HMAC)
- 原理:在哈希基础上加上一个密钥,得到校验值。
- 优点:不仅能检测错误,还能防止伪造(带身份认证)。
- 缺点:比普通哈希更重,适合性能稍好的设备。
- 应用场景:
- MQTT over TLS 的消息完整性。
- 云平台设备鉴权(阿里云、AWS IoT)。
⑥ 数字签名 / 公钥校验
- 原理:使用非对称加密算法(RSA、ECC)对数据签名。
- 优点:能防篡改 + 可追溯来源。
- 缺点:计算量大(一般跑在网关或安全芯片里,不直接在传感器跑)。
- 应用场景:
- 物联网固件 OTA 签名校验。
- 高安全要求(金融支付终端、车联网 ECU)。
🌍 常见物联网协议对应的校验方式
- LoRaWAN:MIC(消息完整性码,基于 AES-CMAC)。
- MQTT:应用层通常自己加 CRC / Hash;加密用 TLS。
- CoAP:依赖 DTLS 提供安全完整性。
- NB-IoT / 4G LTE:底层物理层和链路层有 CRC;上层应用再加 Hash/签名。
- Modbus RTU:CRC16。
- ZigBee:MAC 层用 CRC16,安全层用 AES-CMAC。
✅ 总结
- 简单场合:用 校验和、异或、CRC。
- 需要防篡改:用 哈希 (MD5/SHA)。
- 需要认证 + 防伪造:用 HMAC 或 数字签名。
如果这篇文章对你有用,可以关注本人微信公众号获取更多ヽ(^ω^)ノ ~