trDataTolog 数据更新为密文
添加pack_data函数,密文覆盖明文
This commit is contained in:
parent
f57ebee26d
commit
b65fb0a66a
@ -453,7 +453,7 @@ static void upSendFile_thread_entry(void *parameter)
|
|||||||
rt_sem_release(okTosend);
|
rt_sem_release(okTosend);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (getFileSize(f->fname) > scfg.maxSizePerFile+200) {//部分demo数据体积>>1k
|
if (getFileSize(f->fname) > scfg.maxSizePerFile+500) {//部分demo数据体积>>1k
|
||||||
LOG_W("file '%s' is too large to send.",f->fname);
|
LOG_W("file '%s' is too large to send.",f->fname);
|
||||||
clearFileToSend(f->fname);
|
clearFileToSend(f->fname);
|
||||||
rt_sem_release(okTosend);
|
rt_sem_release(okTosend);
|
||||||
@ -461,10 +461,12 @@ static void upSendFile_thread_entry(void *parameter)
|
|||||||
}
|
}
|
||||||
|
|
||||||
LOG_D("ready to send '%s---%d'",f->fname,f->index);
|
LOG_D("ready to send '%s---%d'",f->fname,f->index);
|
||||||
uint8_t len = pack_File(f->fname, 0, d, s);
|
// uint8_t len = pack_File(f->fname, 0, d, s);
|
||||||
for (size_t i = 0; i < len; i++) {
|
uint8_t len = pack_data(f->fname, 0, d, s);
|
||||||
|
|
||||||
|
// for (size_t i = 0; i < len; i++) {
|
||||||
// LOG_HEX("msg",27,d[i],s[i]);
|
// LOG_HEX("msg",27,d[i],s[i]);
|
||||||
}
|
// }
|
||||||
// list_thread();
|
// list_thread();
|
||||||
if (len)
|
if (len)
|
||||||
{
|
{
|
||||||
@ -544,6 +546,7 @@ void getAndSendFile()
|
|||||||
getLstCacheFileName(fnow);
|
getLstCacheFileName(fnow);
|
||||||
manualAaddlst(fnow);
|
manualAaddlst(fnow);
|
||||||
updateCacheFileName();
|
updateCacheFileName();
|
||||||
|
cryptCdata(fnow);//密文覆盖明文
|
||||||
rt_thread_mdelay(1000);
|
rt_thread_mdelay(1000);
|
||||||
|
|
||||||
|
|
||||||
|
@ -189,7 +189,7 @@ void aes_file(const char *fin, const char *fout)
|
|||||||
}
|
}
|
||||||
write(fd_out, outbuffer, len);
|
write(fd_out, outbuffer, len);
|
||||||
|
|
||||||
LOG_I("AESed to %s done. File size from %d bytes to %d.\n", fout,file_size, len);
|
// LOG_I("AESed to %s done. File size from %d bytes to %d.\n", fout,file_size, len);
|
||||||
|
|
||||||
// goto _exit;
|
// goto _exit;
|
||||||
|
|
||||||
@ -251,7 +251,7 @@ void deaes_file(const char *fin, const char *fout)
|
|||||||
lseek(fd_in, 0, SEEK_SET);
|
lseek(fd_in, 0, SEEK_SET);
|
||||||
|
|
||||||
buffer = (rt_uint8_t *) malloc(file_size);
|
buffer = (rt_uint8_t *) malloc(file_size);
|
||||||
outbuffer = (rt_uint8_t *) malloc(file_size + 16); //加密后最大大16字节
|
outbuffer = (rt_uint8_t *) malloc(file_size); //加密后最大大16字节
|
||||||
if (!buffer || !outbuffer)
|
if (!buffer || !outbuffer)
|
||||||
{
|
{
|
||||||
LOG_E("No memory for AES!\n");
|
LOG_E("No memory for AES!\n");
|
||||||
|
@ -70,6 +70,9 @@ int trDataTolog(uint8_t *din, size_t len, uint8_t isTx)
|
|||||||
strcat(log,isTx?" [T]: ":" [R]: ");
|
strcat(log,isTx?" [T]: ":" [R]: ");
|
||||||
write(fd, log, strlen(log));
|
write(fd, log, strlen(log));
|
||||||
|
|
||||||
|
len = cryp_data(din, len, din);//加密数据
|
||||||
|
bytes2str(din, len, 16, " ", din);
|
||||||
|
len = strlen(din);
|
||||||
int rst = write(fd, din, len);
|
int rst = write(fd, din, len);
|
||||||
if (rst != len)
|
if (rst != len)
|
||||||
{
|
{
|
||||||
@ -196,17 +199,17 @@ void upSend_thread_entry(void* parameter)
|
|||||||
time2Str(fin);
|
time2Str(fin);
|
||||||
strcat(fin,".bin");
|
strcat(fin,".bin");
|
||||||
packInit(&cfg, fin, 0); //写入配置
|
packInit(&cfg, fin, 0); //写入配置
|
||||||
#define PACK_SIZE 130
|
|
||||||
cfg.fcurpiece[0] = 1;
|
cfg.fcurpiece[0] = 1;
|
||||||
cfg.fallpiece[0] = msg->len/PACK_SIZE+1;
|
cfg.fallpiece[0] = msg->len/FRAME_DATA_LEN_MAX+1;
|
||||||
#ifdef CRYPT_BEFRE_PACK
|
#ifdef CRYPT_BEFRE_PACK
|
||||||
//crypt before pack
|
//crypt before pack
|
||||||
//更改后3S单帧数据升为200+,超出TT最大单包数据容量,须分包
|
//更改后3S单帧数据升为200+,超出TT最大单包数据容量,须分包
|
||||||
for (size_t var = 0; var < msg->len; var=var+PACK_SIZE) {
|
for (size_t var = 0; var < msg->len; var=var+FRAME_DATA_LEN_MAX) {
|
||||||
cfg.fcurpiece[0] = var/PACK_SIZE+1;
|
cfg.fcurpiece[0] = var/FRAME_DATA_LEN_MAX+1;
|
||||||
|
|
||||||
static uint8_t tmp[200];
|
static uint8_t tmp[200];
|
||||||
uint8_t tlen = (msg->len-var)>PACK_SIZE?PACK_SIZE:(msg->len-var);
|
uint8_t tlen = (msg->len-var)>FRAME_DATA_LEN_MAX?FRAME_DATA_LEN_MAX:(msg->len-var);
|
||||||
uint8_t len = cryptSingleMsg(msg->data+var, tlen, tmp);
|
uint8_t len = cryptSingleMsg(msg->data+var, tlen, tmp);
|
||||||
// LOG_HEX("2",16,msg->data+var,tlen);
|
// LOG_HEX("2",16,msg->data+var,tlen);
|
||||||
|
|
||||||
@ -1523,6 +1526,7 @@ int cacheDataToFile(uint8_t *din, size_t len)
|
|||||||
|
|
||||||
if (size > scfg.maxSizePerFile) {
|
if (size > scfg.maxSizePerFile) {
|
||||||
updateCacheFileName();//更新文件名,置于线程前避免冲突
|
updateCacheFileName();//更新文件名,置于线程前避免冲突
|
||||||
|
cryptCdata(f);//密文覆盖明文
|
||||||
postFileInfo(f,0);//加入待发列表
|
postFileInfo(f,0);//加入待发列表
|
||||||
}
|
}
|
||||||
rst=RT_EOK;
|
rst=RT_EOK;
|
||||||
@ -1898,6 +1902,11 @@ size_t decryptCdata(const char *fin, uint8_t *dout)
|
|||||||
|
|
||||||
rt_uint8_t *buffer = RT_NULL;
|
rt_uint8_t *buffer = RT_NULL;
|
||||||
buffer = rt_malloc(file_size);
|
buffer = rt_malloc(file_size);
|
||||||
|
if (!buffer)
|
||||||
|
{
|
||||||
|
LOG_E("No memory for read cdata!\n");
|
||||||
|
return RT_ERROR;
|
||||||
|
}
|
||||||
read(fd, buffer, file_size);
|
read(fd, buffer, file_size);
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
|
@ -353,6 +353,100 @@ rt_uint8_t pack_File(const char *fin, rt_uint8_t flag, const rt_uint8_t (*dout)[
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 2023.11.08追加功能,缓存为密文,此函数将缓存解密后发送
|
||||||
|
* @param fin
|
||||||
|
* @param flag
|
||||||
|
* @param dout
|
||||||
|
* @param arrLen
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
rt_uint8_t pack_data(const char *fin, rt_uint8_t flag, const rt_uint8_t (*dout)[200], rt_uint8_t *arrLen)
|
||||||
|
{
|
||||||
|
static MSG cfg;
|
||||||
|
rt_memset(&cfg, 0, sizeof(MSG)); // 分配空间
|
||||||
|
rt_uint8_t rst = packInit(&cfg, fin, flag);
|
||||||
|
if (rst != RT_EOK)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t decryptData[2048];
|
||||||
|
size_t file_size = decryptCdata(fin, decryptData);
|
||||||
|
if (!file_size) {
|
||||||
|
LOG_E("failed to decrypt");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
size_t flen = 150; // 每包数据初始长度,最大不超过 FRAME_DATA_LEN_MAX
|
||||||
|
|
||||||
|
// 粗略调整每包大小
|
||||||
|
if (file_size > (size_t) FRAME_DATA_LEN_MAX)
|
||||||
|
{
|
||||||
|
while ((file_size % flen) < (flen / 1.2) && flen < FRAME_DATA_LEN_MAX) // 阈值约83%
|
||||||
|
{
|
||||||
|
flen += 1;
|
||||||
|
}
|
||||||
|
if ((file_size % flen) < (flen / 1.2))
|
||||||
|
{ // 到达限制仍不符合要求
|
||||||
|
flen = 150;
|
||||||
|
while ((file_size % flen) < (flen / 2.5) && flen < FRAME_DATA_LEN_MAX) // 调整阈值为40%
|
||||||
|
{
|
||||||
|
flen += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
flen = file_size;
|
||||||
|
}
|
||||||
|
LOG_E("p=%d",flen);
|
||||||
|
//延用算法,用特定大小依次读取数据,弃用一次性全部读入
|
||||||
|
|
||||||
|
uint8_t row = (file_size / flen) + (file_size % flen > 0 ? 1 : 0);
|
||||||
|
cfg.fallpiece[0] = row;
|
||||||
|
LOG_E("--------row=%d,%d",row,cfg.fallpiece[0]);
|
||||||
|
uint8_t block_size = 0;
|
||||||
|
rt_uint8_t *buffer = RT_NULL;
|
||||||
|
buffer = (rt_uint8_t *) rt_malloc(flen);
|
||||||
|
if (buffer == RT_NULL)
|
||||||
|
{
|
||||||
|
LOG_E("No memory for read %s.", fin);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t i = 0; i < file_size; i += flen)
|
||||||
|
{
|
||||||
|
if ((file_size - i) < flen)
|
||||||
|
{
|
||||||
|
block_size = file_size - i;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
block_size = flen;
|
||||||
|
}
|
||||||
|
|
||||||
|
rt_memset(buffer, 0x00, flen);
|
||||||
|
rt_memcpy(buffer, decryptData, block_size);
|
||||||
|
uint8_t index = (i / flen);
|
||||||
|
cfg.fcurpiece[0] = index + 1;
|
||||||
|
|
||||||
|
//crypt before pack
|
||||||
|
static uint8_t tmp[200];
|
||||||
|
uint8_t len = cryptSingleMsg(buffer, block_size, tmp);
|
||||||
|
uint8_t col = packMsg(&cfg, tmp, len, dout[index]);
|
||||||
|
|
||||||
|
arrLen[index] = col;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (buffer != RT_NULL)
|
||||||
|
{
|
||||||
|
rt_free(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG_E("row=%d,%d",row,cfg.fallpiece[0]);
|
||||||
|
return row;//cfg.fallpiece[0];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 天通上电
|
* 天通上电
|
||||||
* @param parameter "0"断电,其它上电
|
* @param parameter "0"断电,其它上电
|
||||||
|
Loading…
Reference in New Issue
Block a user