结合上一篇 文章,本文 学习 MD5 校验。
电脑做服务器,开发板做客户端。
客户端从服务器下载升级包,如果下载过程中断、丢包,客户端又不做校验,用损坏的文件做系统升级,会导致升级失败,校验是最后一道安全门。
下面是MD5 、SHA256对比:
MD5 | SHA256 | |
全称 | Message Digest 5 | Secure Hash Algorithm 256 |
输出长度 | 128 位(32 字符) | 256 位(64 字符) |
速度 | 快 | 稍慢 |
安全性 | 已破解,有碰撞 | 目前安全 |
碰撞风险 | 高(可伪造相同 MD5 的文件) | 极低 |
计算开销 | 极低 | 低 |
怎么选择?
场景 | 推荐 | 原因 |
文件完整性校验(防下载损坏) | MD5 | 够用,快 |
OTA 固件签名/防篡改 | SHA256 | 安全,防恶意替换 |
密码存储 | SHA256 + 盐 | MD5 不安全 |
嵌入式小文件 | MD5 或 SHA256 | 性能差异可忽略 |
命令示例:
MD5 | SHA256 | |
生成 | md5sum file > file.md5 | sha256sum file > file.sha256 |
校验 | md5sum -c file.md5 | sha256sum -c file.sha256 |
安全性 | 低(有碰撞风险) | 高(工业标准) |
本文先用 MD5 做测试 ,文件完整性校验(防下载损坏)
现在开始测试:
开发板和电脑 连接同一个wifi,让开发板和电脑在同一网段,确保开发板能ping通电脑的 ip
第一步:
在 虚拟机 ,内核 设备树 生成 MD5 文件
查看 MD5哈希值
第二步:
把 内核 设备树 和 2个 md5 文件,一起发送到 Windows 的自定义目录里
第二步:打开 Windows 的 powershell :
进入 Windows 的自定义目录
D:
cd My_File\imx6ull_OTA
启动 HTTP 服务: python -m http.server 8080
开发板只能下载该目录及子目录下的文件。
第三步:开发板下载并验证
下载升级包
下载 md5 文件
在开发板 校验:
显示 ok , MD5 校验通过。