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