ATSAME54 的 AES 加密结果异常?注意密钥长度和块大小的匹配!以下是正确的初始化和加密流程:
/ AES-128加密初始化(ATSAME54)
void AES_Init(void) {
// 使能AES时钟
PM->APBCMASK.reg |= PM_APBCMASK_AES;
// 配置AES
AES->CTRLA.reg = AES_CTRLA_SWRST;
while(AES->SYNCBUSY.reg & AES_SYNCBUSY_SWRST);
// 设置密钥(16字节 = 128位)
uint8_t key[16] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF};
for(int i = 0; i < 16; i++) {
AES->KEY[i].reg = key[i];
}
// 配置加密模式(ECB)
AES->CTRLB.reg = AES_CTRLB_MODE(0) | // ECB模式
AES_CTRLB_DATALEN(0); // 16字节数据块
}
|