【已解决】Tuya os是否有AES 128加解密的接口
你好,我想在涂鸦os里使用AES128进行数据加密.请问我该如何实现?比如我需要将""通过AES128的ecb模式进行加密,并且输出32位字节的密文.请问在涂鸦os里如何实现??
你好,我想在涂鸦os里使用AES128进行数据加密.请问我该如何实现?比如我需要将""通过AES128的ecb模式进行加密,并且输出32位字节的密文.请问在涂鸦os里如何实现??
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 );
wbr1d的涂鸦os版本最高也才3.3.4,现在我该如何实现呢
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);
我调用了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]);
}
你是如何调用的demo代码麻烦附一下
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]);
}
关于aes128_ecb_encode接口使用注意点
参考:
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);
非常感谢.问题解决了