数据加密
加密原理: 把一帧需要发送的数据按位加上密码的每个字节,并且对密码字节做循环,然后保存回这一帧的数据包里面
示意图
代码实现
/******************************************************
* Function Name : Encryption
* Description : 加密函数
* Parameters : *pstr:需要加密的数据数组 len:数据长度
* Return : None
* Notice : None
******************************************************/
void Encryption(uint8_t* pstr, uint8_t len) //加密函数
{
uint8_t Offset = 0; //偏移量
uint8_t key_len = sizeof(key) - 1; //密码长度
for (int i = 0; i < len; i++)
{
*(pstr + i) = *(pstr + i) + *(key + Offset); //加密
Offset++;
Offset %= key_len; //对密码循环
}
}
数据解密
注:解密是加密的逆过程
示意图
代码实现
/******************************************************
* Function Name : Decrypting
* Description : 解密函数
* Parameters : *pstr:需要加密的数据数组 len:数据长度
* Return : None
* Notice : None
******************************************************/
void Decrypting(uint8_t *pstr, uint8_t len) //解密函数
{
uint8_t Offset = 0; //偏移量
uint8_t key_len = sizeof(key) - 1; //密码长度
for (int i = 0; i < len; i++)
{
*(pstr + i) = *(pstr + i) - *(key + Offset); //解密
Offset++;
Offset %= key_len; //对密码循环
}
}