S32K的Csec硬件安全模块计算CMAC

通过实际操作发现,完全相同的形式(同样的flash起始地址和同样的size),不同的API去计算CMAC(not Boot-MAC)的值,得到的结果显然是不一样的。

原因如下:
CSEC_DRV_GenerateMAC 这个API是按照每次1字节去读取数据的。
CSEC_DRV_GenerateMACAddrMode 猜想这个API是按照每次4个字节去读取数据的。

 

因为S32K系列的MCU是little-endian模式(默认情况下)。一个0x12345678的十六进制数被认为是[0x78, 0x56, 0x34, 0x12]。不同的角度去读取数值,得到的结果是不一样的。

也就是说,完全相同的形式(同样的flash起始地址和同样的size),得到的结果必定是不一样的。但是用户可以从不同的角度去“解读”计算得到的结果,可以认为两者都是对的。

所以结果不一致在这个芯片下是“正常”的。

posted @ 2022-04-15 09:42  panrui  阅读(964)  评论(0编辑  收藏  举报