This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430FR5969:AES 256的驱动程序工作不良

Guru**** 2571705 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/605833/ccs-msp430fr5969-bad-working-drivelib-for-aes-256

器件型号:MSP430FR5969

工具/软件:Code Composer Studio

您好!

我只想使用 FR5969中的硬件 AES256 (对于来自德州的比较库 TI_AES_128、使用25%的堆栈大小!)。 现在、我的硬件 AES 有问题。 我只获得了部分 drivelib (http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430_Driver_Library/latest/index_FDS.html )

unsigned char AES_Key[16];

void AES_keyset (void)

AES_Key[0]= 0x00;
AES_Key[1]= 0x01;
AES_Key[2]= 0x02;
AES_Key[3]= 0x03;
AES_Key[4]= 0x04;
AES_Key[5]= 0x05;
AES_Key[6]= 0x06;
AES_Key[7]= 0x07;
AES_Key[8]= 0x08;
AES_Key[9]= 0x09;
AES_Key[10]= 0x0A;
AES_Key[11]= 0x0B;
AES_Key[12]= 0x0C;
AES_Key[13]= 0x0D;
AES_Key[14]= 0x0E;
AES_Key[15]= 0x0F;

AES256_setCipherKey (AES256_BASE、AES_Key、AES256_KEYLENGTH_128bit);
AES256_setDechimKey (AES256_BASE、AES_Key、AES256_KEYLENGTH_128bit);

和大猩猩:

数据-> AES256_encryptData() -> AES256_ryptData -> someData 和数据!= someData。 那么、会发生什么情况呢?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tomasz、

    您需要在加密之前设置密码密钥、并在解密之前设置解密器密钥。 例如:

    void main (void){
    //停止看门狗
    WDT_A_HOLD (WDT_A_base);
    
    //将密码密钥加载到模块
    AES256_setCnhKey (AES256_BASE、CnhKey、AES256_KEYLENGTH_256位);
    
    //使用预加载的密码密钥加密数据
    AES256_encryptData (AES256_BASE、数据、DataAESencrypted);
    
    //将密码密钥加载到模块
    AES256_setDechipKey (AES256_BASE、ChipKey、AES256_KEYLENGTH_256位);
    
    //解密数据
    AES256_decrittData (AES256_BASE、DataAESencrypted、DataAESdeceded);
    
    // Array DataunAES 现在应包含与 Array Data 相同的数据
    
    while (1)
    {
    }
    ;
    } 

    在上面包含的伪代码中、您好像同时设置了密码和解密器密钥。 这将导致不正确的结果。  

    此致、  

    Caleb Overbay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、但它仍然不起作用。 另一 个超过256个数据 i 数组"out"的 KEYLENGTH 与"test"中的"afert 解密相同。 出什么问题了?

    AES256_setCipherKey (AES256_BASE、AES_Key、AES256_KEYLENGTH_128bit);

    AES256_encryptData( AES256_BASE,AES_DataEnc,TEST );

    AES256_setDechimKey (AES256_BASE、AES_Key、AES256_KEYLENGTH_128bit);

    AES256_decrittData( AES256_BASE,TEST,OUT );

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Tomasz、

    我刚刚再次测试了这一点、但我仍然没有观察到您的行为。 您是否可以发布重新创建问题的代码的精简版本、以便我可以在我的设置中测试它?

    此致、
    Caleb Overbay
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../testout_5F00_T.zipThe测试项目已附加

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tomasz、

    我对您的项目中的 AES256.c 文件和 driverlib 中包含的文件进行了比较、发现在您的文件版本中、~第155行中注释出了一段关键代码:

    //应使用已编写的密钥
    //现在解密开始
    HWREG16 (baseAddress + OFS_AESASTAT)|= AESKEYWR; 

    在您的文件中注释掉的这一行代码、一旦修复、解密就开始正常工作。

    此致、  

    Caleb Overbay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Caleb! 它现在可以工作了。

    此致!