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.

[参考译文] RTOS/CC1310:CC1310 AES 128 ECB 有效载荷大小限制

Guru**** 2547580 points
Other Parts Discussed in Thread: CC1310

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/750964/rtos-cc1310-cc1310-aes-128-ecb-payload-size-limitation

器件型号:CC1310

工具/软件:TI-RTOS

嘿、geeks  

        我将使用加密库中的 AES 128加密 API 和 CC1310。 加密类型为 ECB。 我只是从 UART 发送灯串并在终端上获取输出  

在我的案例中、加密和解密工作很好的梗死我在输出时得到解密字符串、但问题是解密仅限于15字节。 如果有效载荷大小超过15字节、则加密字节仅限于15字节  

这是我的 TI RTOS 代码

/*
=== uartecho.c ====
*/
#include 
#include 

/*驱动程序头文件*/
#include 
#include 
#include 
/*示例/板头文件*/
#include "Board.h"

/*
=== mainThread ====
*/

*

* AES 128 CBC 加密测试
*/

#define PAYLOAD_LEN 100

typedef struct
{
uint8_t key[16]; //存储 AES 密钥
加密 CC26XX_KeyLocation 密钥位置;//密钥 RAM
中的位置 uint8_t cleartext[PAYLOAD_LEN]; //输入消息- cleartext
uint8_t msgOut[PAYLOAD_LEN]; //输出消息
} AESECBExample;
// AES ECB 示例数据


AESECBExample ecbExample =
{
0x2B、0x7E、0x15、0x16、0x28、 0xAE、0xD2、0xA6、
0xAB、0xF7、 0x15、0x88、0x09、0xCF、0x4F、 0x3C}、 //密钥128位
CRYPTOCC26XX_KEY_0、 //位置
{'t'、'h'、'i'、's'、'i'、's'、'a'、'l'、'a'、'i'、'n'、't'、'e'、'x'、't'}、 //文本消息
{0x0、0x0、0x0、0x0、0x0、0x0、 0x0、0x0、0x0、0x0、0x0、 0x0、0x0、0x0、0x0、0x0、 0x0}//Output message
};
//声明(通常在任务中完成)
CryptoCC26XX_handle 句柄;
int32_t KeyIndex;
Int32_t 状态;
CryptoCC26XX_AESECB_Transaction trans;


void * mainThread (void * arg0)
{
特性 输入;
const char echoPrompt[]="AES128加密示例";
const char prompt []="enterd data";
const char EncData[]="加密数据";
const char Enter[]="\r\n";
CHAR RxBuff[50];
uint8_t 计数= 0;


/*调用驱动程序初始化函数*/
GPIO_init();
USB_ON();

/*配置 LED 引脚*/
GPIO_setConfig (Board_GPIO_LED0、GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);

/*打开用户 LED */
GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_ON);

USB_println (echoPrompt);


/*循环永久回显*/
while (1){

input=USB_read();
if (input!=NULL){
RxBuff[count]=输入;
if (RxBuff[count]='\r\n'){
RxBuff[count]=NULL;
计数= 0;
USB_printString ("输入数据:");USB_println (RxBuff);

///---------------------- 加密-----------------------------

CryptoCC26XX_init();
//尝试打开 CryptoCC26XX。
Handle = CryptoCC26XX_open (Board_CRYPTO0、false、NULL);
如果(!handle){
USB_printString ("无法打开加密模块。");
}
KeyIndex = CryptoCC26XX_allocateKey (handle、ecbExample.keyLocation、
(const uint32_t *) ecbExample.key);
if (keyIndex =CRYPTOCC26XX_STATUS_ERROR){
USB_printString ("未分配密钥位置。");
}
//初始化事务
CryptoCC26XX_transac_init ((CryptoCC26XX_Transaction *)&trans、CRYPTOCC26XX_OP_AES_ECB_encrypt);
//设置事务
TRANS.keyIndex = keyIndex;
TRANS.msgIn =(uint32_t *) RxBuff;
TRANS.msgOut =(uint32_t *) ecbExample.msgOut;
//使用 AES ECB 加密明文
状态= CryptoCC26XX_transact (handle、(CryptoCC26XX_Transaction *)&trans);
if (status!= CRYPTOCC26XX_STATUS_SUCCESS){
USB_printString ("加密失败");
}



USB_printString ("加密消息:");USB_println ((uint32_t *) transs.msgOut);

//初始化事务
CryptoCC26XX_transac_init ((CryptoCC26XX_Transaction *)&trans、CRYPTOCC26XX_OP_AES_ECB_Decrypt);
//设置事务
TRANS.keyIndex = keyIndex;
TRANS.msgIn =(uint32_t *) ecbExample.msgOut;
TRANS.msgOut =(uint32_t *) ecbExample.cleartext;
//在将 cypher 文本解密到 ecbExample.cleartext 数组之前,将原始清除文本归零
memset (ecbExample.cleartext、0x0、PAYLOAD_LEN);
//使用 AES ECB 解密明文
状态= CryptoCC26XX_transact (handle、(CryptoCC26XX_Transaction *)&trans);
if (status!= CRYPTOCC26XX_STATUS_SUCCESS){
USB_printString ("解密失败。");
}
CryptoCC26XX_releaseKey (句柄、&keyIndex);
USB_printString ("解密消息:");USB_println ((uint32_t *) ecbExample.cleartext);

///------------------ 终端加密---
}否则{
count++;
}

}

} 




这是终端工具的屏幕截图
还有什么东西我在这里没有?
谢谢  

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

    另请阅读该主题中给出的链接、了解为什么 ECB 不是一个好的解决方案。

    您可以在以下位置找到 CCM 的示例: e2e.ti.com/.../641353
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 ter

            我已经尝试了您在 URL 中提供的示例,其中有未定义的变量和宏,我还包括 了 CryptoCC26XX 驱动程序路径。 您能给我提供示例的标题吗  

    谢谢  
            

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

    "您可以在以下位置找到 CCM 的示例: e2e.ti.com/.../641353"
    我需要您建议的此链接的完整示例  
    CCM

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它存在一个 E2E 帖子、涵盖了缺失的变量和 CCM、但目前我无法找到它。 您确切地得到了哪些错误消息? 我将看到这是否有助于我找到我正在思考的帖子。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在这方面有什么进展?