Other Parts Discussed in Thread: CC2650
Thread 中讨论的其他器件:CC2650
工具/软件:TI-RTOS
大家好、我在使用 CryptoCC26XX.h 库进行加密时遇到问题。 我执行了该 示例 dev.ti.com/.../_crypto_c_c26_x_x_8h.html 中的所有操作、但它不起作用。
变量状态= CryptoCC26XX_transact (handle、(CryptoCC26XX_Transaction *)&trans);获取始终值1且值为0、这意味着加密失败。
代码如下:
/* for usleep()*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
/*板头文件*/
#include "Board.h"
void encrypt();
void decrypt ();
typedef struct
{
uint8_t key[16]; //存储 AES 密钥
加密 CC26XX_KeyLocation 密钥位置;//密钥 RAM
uint8_t cleartext[AES_ECb_length]中的位置;//输入消息- cleartext
uint8_t msgOut[AES_ECb_length]; //输出消息
} AESECBExample;
AESECBExample ecbExample =
{
0x2B、0x7E、0x15、0x16、0x28、 0xAE、0xD2、0xA6、
0xAB、0xF7、 0x15、0x88、0x09、0xCF、0x4F、 0x3C}、
CRYPTOCC26XX_KEY_0、
{"t"、"h"、"i"、"S"、"i"、"a"、"p"、"l"、"a"、"a"、"i"、"n"、"t"、"e"、"x"、"t"、"t"}、
{0x0、0x0 0x0、0x0、0x0、0x0、0x0、 0x0、0x0、0x0、0x0、0x0、 0x0、0x0、0x0、0x0}
};
CryptoCC26XX_handle 句柄;
int32_t KeyIndex;
Int32_t status;
CryptoCC26XX_AESECB_Transaction trans;
void encrypt()//memcpy (ecbExample.cleartext、data、16); //memcpy (data、ecbExample.msgOut、16);如果您不想直接使用结构
{
CryptoCC26XX_transac_init ((CryptoCC26XX_Transaction *)&trans、CRYPTOCC26XX_OP_AES_TRANS_Index);//初始化事务
//设置事务处理。
* crypto_intract.text = CC26XX_tract_tran.tran.tran.tract.tran.tran.tran.cc32= CC26xx (transcal.tran.tran.tran.tran.tran.transcal.tran.tran.tran.tran.tran.tran.cc32= CC26xx
system_abort ("加密失败。\n");
}
void decring()
{
CryptoCC26XX_transac_init (((CryptoCC26XX_Transaction *)&trans、CRYPTOCC26XX_OP_AES_ECB_trdecrypt);// clearexceed.keyIndex
=
cyIndex;Initialize.msgample = 0xt_out.tran.text = clearmsOut_extran.tran.tran.tran.u.text = clearb.eSb (在
原始 ECB 文本之前)、tran.tran.tran.tran.tran.tran.tran.tran.tran.tran.tran.text = clearmsect_tran.tran.tran.tran.tran.tran.text =
//使用 AES ECB 状态对明文进行解密
= CryptoCC26XX_transact (handle、(CryptoCC26XX_Transaction *)&trans);
if (status!= CRYPTOCC26XX_STATUS_SUCCESS){
System_abort ("加密失败.\n");
}
void * mainThread (void Cryptoarg0)
{CC26XX_status_open/CC26XX
(Crypto/CC26XX)/init/crto handle (
crto open/CC26XX);}void * Crypto/CC26XX (crto handle CC26XX_open/init (crto handle)。
如果(!handle) System_abort ("无法打开加密模块。\n");
keyIndex = CryptoCC26XX_allocateKey (handle、ecbExample.keyLocation、(const uint32_t *) ecbExample.key);
if (keyIndex = CRYPTOCC26XX_STATUS_ERROR) System_Abort Key ("未分配)。
uint32_t 时间= 1;/* 1秒延迟*/
/*调用驱动程序初始化函数*/
GPIO_init();
// I2C_init ();
// SDSPI_init ();
// spi_init();
// uart_init();
// Watchdog_init();
/*配置 LED 引脚*/
GPIO_setConfig (Board_GPIO_LED0、GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
/*打开用户 LED */
//GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_ON);
while (1){
睡眠(时间);
GPIO_toggle (Board_GPIO_LED0);
encrypt();
printf ("encrypted\n");
decrypt ();
printf ("deced\n");
}
}
是否有人知道为什么它不起作用?