我们的项目有OTA的需求。我们OTA的过程是,首先向服务端获取一个UpdateInfo文件,文件里记录了最新版本号、更新内容还有新版本的固件SHA256值等信息。当发现服务器的最新版本号高于当前固件版本号就会开始升级,升级后最后一个步骤就是校验哈希值,把本地计算出来的哈希值跟UpdateInfo里面的哈希值进行比对,一致则说明数据没有丢包或错包。
这种方案需要基于一套相同的SHA256算法,但是我发现网上下载的或者是系统自带的SHA256校验软件,计算出来的校验值,跟ESP32使用库函数计算出来的校验值,是不一致的, 因此判断ESP32内部库函数的SHA256算法可能不一样,也可能存在大小端对调或者是补码的过程。
现在我们的做法是,每次要计算固件的哈希值,把要计算的固件当成烧录到ota2分区,然后再烧录一个能计算sha256的固件到ota1分区,启动ota1分区去计算ota2分区的SHA256值,这种方法十分繁琐。
所以我想知道有没有一种软件,能够得出与ESP32库函数计算出来相同SHA256的软件?
请问应当使用什么软件计算.bin文件的SHA256值?
-
- Posts: 35
- Joined: Mon May 25, 2020 2:12 am
Re: 请问应当使用什么软件计算.bin文件的SHA256值?
问题已解决。
bin文件最后32个字节即是SHA256值,工具在计算时连同这32个字节一起拿去计算SHA256值了,而芯片运行时计算的是忽略最后32个字节的。因此两者计算结果不一致。如果把bin文件最后32个字节去掉,再使用工具计算,可以得到相同的结果。
bin文件最后32个字节即是SHA256值,工具在计算时连同这32个字节一起拿去计算SHA256值了,而芯片运行时计算的是忽略最后32个字节的。因此两者计算结果不一致。如果把bin文件最后32个字节去掉,再使用工具计算,可以得到相同的结果。
Re: 请问应当使用什么软件计算.bin文件的SHA256值?
老哥,我也在弄OTA,看你的意思是编译生成的bin文件最后几个字节就是sha256校验码。校验bin文件直接在esp32上对除去最后那几个字节的bin文件进行sha256运算就行,是吗?
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Who is online
Users browsing this forum: No registered users and 176 guests