【已解决】Tuya os是否有AES 128加解密的接口

Wi-Fi 设备、Wi-Fi 低功耗设备、Wi-Fi BLE 双模设备、Ethernet设备、Ethernet+Wi-Fi设备等
Post Reply
Robertz
Posts: 100

你好,我想在涂鸦os里使用AES128进行数据加密.请问我该如何实现?比如我需要将""通过AES128的ecb模式进行加密,并且输出32位字节的密文.请问在涂鸦os里如何实现??

一线长天
Posts: 52

Re: Tuya os是否有AES 128加解密的接口

TuyaOS-3.5及之后的SDK均提供了加解密组件tal_security。
具体可以参考tal_security.h以及tal_symmetry.h。

//aes128_ecb加密
OPERATE_RET tal_aes128_ecb_encode_raw(UINT8_T *data,
size_t len,
UINT8_T *ec_data,
UINT8_T *key );

//aes128_ecb解密
OPERATE_RET tal_aes128_ecb_decode_raw(UINT8_T *data,
size_t len,
UINT8_T *dec_data,
UINT8_T *key );

Robertz
Posts: 100

Re: Tuya os是否有AES 128加解密的接口

wbr1d的涂鸦os版本最高也才3.3.4,现在我该如何实现呢

一线长天
Posts: 52

Re: Tuya os是否有AES 128加解密的接口

3.3的SDK可以使用aes_inf.h头文件里的API
OPERATE_RET aes128_ecb_encode(IN CONST BYTE_T *data, IN CONST UINT_T len, \
OUT BYTE_T **ec_data, OUT UINT_T *ec_len, \
IN CONST BYTE_T *key);
OPERATE_RET aes128_ecb_decode(IN CONST BYTE_T *data, IN CONST UINT_T len, \
OUT BYTE_T **dec_data, OUT UINT_T *dec_len, \
IN CONST BYTE_T *key);

15158693303
Posts: 36

Re: Tuya os是否有AES 128加解密的接口

我调用了aes128_ecb_encode后,日志打印显示为啥都是00,一下为代码

BYTE_T data[] ="l8hpkkjnn93mx0pe";
BYTE_T datakey[] ="6r4mq0ptoan2wf70";
uint16_t len1=0;

Code: Select all

    BYTE_T data1[37]={0};
    TAL_PR_DEBUG("datalen:%d",sizeof(data)/sizeof(data[0]));
    aes128_ecb_encode(data,sizeof(data)/sizeof(data[0]),&data1,&len1,datakey);
	
    for(int i=0;i<sizeof(data1)/sizeof(data1[0]);i++)
    {
    TAL_PR_DEBUG("AES_DE: %02x", data1[i]);
    }
Attachments
微信图片_20240201140533.png
Last edited by 15158693303 on 2024年 Feb 1日 15:38, edited 1 time in total.
yingtao_33
Posts: 223

Re: Tuya os是否有AES 128加解密的接口

你是如何调用的demo代码麻烦附一下

15158693303
Posts: 36

Re: Tuya os是否有AES 128加解密的接口

Code: Select all

BYTE_T data[] ="l8hpkkjnn93mx0pe";
        BYTE_T datakey[] ="6r4mq0ptoan2wf70";
        uint16_t len1=0;


    BYTE_T data1[37]={0};
    TAL_PR_DEBUG("datalen:%d",sizeof(data)/sizeof(data[0]));
    aes128_ecb_encode(data,sizeof(data)/sizeof(data[0]),&data1,&len1,datakey);
	
    for(int i=0;i<sizeof(data1)/sizeof(data1[0]);i++)
    {
    TAL_PR_DEBUG("AES_DE: %02x", data1[i]);
    }
    
User avatar
卢台长
Posts: 7

Re: Tuya os是否有AES 128加解密的接口

关于aes128_ecb_encode接口使用注意点

  1. 加密后输出的结果,函数内部会自动malloc长度(按pkcs7对齐方式),只要定义一个uint8_t指针即可,用完后需要释放aes_free_data即可
  2. 加密后输出的长度是uint32_t,而不是uint16_t,否则可能写穿内存
  3. 按你代码示例,数组初始化用字符串,用sizeof计算会多包含一个'\0',可以使用strlen来计算长度

参考:

Code: Select all

BYTE_T data[] ="l8hpkkjnn93mx0pe";
BYTE_T datakey[] ="6r4mq0ptoan2wf70";
UINT32_T outlen = 0;
BYTE_T  *outdata = NULL;

aes128_ecb_encode(data, strlen(data), &outdata, &outlen, datakey);

TAL_PR_DEBUG("AES_DE: ");
for (int i = 0; i < outlen; i++) {
    TAL_PR_DEBUG("%02x", outdata[i]);
}
aes_free_data(outdata);

Last edited by 卢台长 on 2024年 Feb 1日 19:57, edited 1 time in total.
15158693303
Posts: 36

Re: Tuya os是否有AES 128加解密的接口

非常感谢.问题解决了

Post Reply