最近都在调试加密算法,虽然基本的加密算法都有接口封装好了,我将它应用到设备中并实现以文件方式来做,移植很快,老是有问题,调试和查bug的过程花费了我大部分的时间,一些明显但粗心所致的问题列如下,以备提醒、总结:
1、编写测试程序过程中有赋值的:
/*定义数据单元结构,对于符合缓冲区头指针、缓冲区长度的参数设计均可以采用该结构*/
typedef struct
{
pu1 pu1DataBuf; /*数据缓冲区头指针*/
u4 u4DataLen; /*数据缓冲区大小*/
}DB_CELL, *PDB_CELL;
u1 u1Buf[16] = "/x31/x32/x33/x34/x35/x36/x37/x38/x31/x32/x33/x34/x35/x36/x37/x38";
memcpy(myDBcell.pu1DataBuf ,u1Buf,sizeof(u1Buf));
注意:指针不可如此赋值,如此导致程序莫名跑飞,存在野指针。
2、没注意定义值范围
typedef unsigned char u1;
u1 offset;
offset = GroupID*(sizeof(TKSNLOG)+sizeof(TDUKPTKEYLOG)*DUKPTFUTUREKEY_NUM+sizeof(TDUKPTINITKEY))+sizeof(TKSNLOG)+sizeof(TDUKPTKEYLOG)*(pvDUKPTStruct->m_u1KeyID);
注意:后续的赋值超过了0~255这个范围,导致在写入文件的时候数据写入错误,offset改为int就ok了,该问题完全就是粗心所致,后续要小心了。