当前位置: 首页 > news >正文

物联网字节校验常用方法

① 校验和(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 或 数字签名。
http://www.hskmm.com/?act=detail&tid=17785

相关文章:

  • STM32H743-ARM例程2-UART命令控制LED - 实践
  • 完整教程:Zookeeper与Kafka:分布式系统中的协调与消息队列
  • vite-vue3 项目优化首屏加载速度
  • 12_TCP和UDP实现服务端和客户端的通信
  • 各种软件的官方文档和安装包下载地址记录
  • 基于导频的OFDM系统的信道估计(使用LS估计算法)
  • Day22super详解
  • 外发图纸如何控制的最佳实践与注意事项
  • Gitee:中国开发者生态的数字底座正在重构技术格局
  • 快递100
  • 文件同步软件是什么?主要有哪几种类型?
  • “铸网2025”山东省工业和互联网CTF竞赛-web
  • 领嵌iLeadE-588网关AI边缘计算盒子一键部署二次开发
  • 2025年值得选的文件摆渡系统品牌解析
  • 全球知名的Java Web开发平台Vaadin上线慧都网!
  • C#实现与欧姆龙PLC通信
  • linux docker 配置外网拉镜像
  • 什么是跨网文件摆渡系统?IT运维效率提升300%的秘密武器
  • 借助Aspose.Email,在 Python中创建事件日历
  • 实用指南:【JavaEE初阶】多线程重点知识以及常考的面试题-多线程进阶(三)
  • C++ map 和unordered_map 的区别
  • 【英语启蒙动画合集】0基础宝宝必看的动画,超全!直接下载~
  • 基于OPC UA协议的SIMATIC PLC通信实现
  • AI 自动化智能体训练营 | 借助人工智能提升工作效率,打造自己的智能体工作流
  • MX-X21
  • Kubernetes Cilium网络组件和CoreDNS配置
  • 题解:P10107 [GDKOI2023 提高组] 树
  • Gitee Wiki:AI赋能的下一代研发知识管理平台如何重塑软件行业协作范式
  • COLMAP 安装在ubuntu20服务器上问题解决全记录
  • 完整教程:Prompt Tuning提示词微调工程