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),得到的结果必定是不一样的。但是用户可以从不同的角度去“解读”计算得到的结果,可以认为两者都是对的。

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM