固件通信CRC校验

 一、设备端加密

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见下篇 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值