一、设备端加密
uint8 get_crc8(uint8 *ptr,uint32 len)
{
uint8 crc;
uint8 i;
crc = 0;
while(len--)
{
crc ^= *ptr++;
for(i = 0;i < 8;i++)
{
if(crc & 0x01)
{
crc = (crc >> 1) ^ 0x8F;
}else crc >>= 1;
}
}
return crc;
}
二、Java后台加密
public static int getCRC(byte[] data){
int CRC=0;
for(int i=0;i<data.length; i++){
int li = data[i];
if(li<0)
li &= 0XFF;
CRC ^= li;
for(int j=0;j<8;j++){
if((CRC & 0x01) != 0){
CRC = (CRC >> 1) ^ 0X8f;
}else{
CRC >>= 1;
}
}
}
CRC &= 0xff;
return CRC;
}
说明:后台获取设备提交过来得内容后,生成CRC码进行校验。(java中byte有符号最大127,超过后强转为负数,与上ff即可)
java字符串转byte见下篇