异或校验和MD5加密有些类似,个人理解的核心原理如下:

假如你需要传输一组数据1,2,3,为了确保数据正确性,你额外加了一个数 6;

最终传输的数据是1,2,3,6 ,这个6是怎么得出的呢? 是前面三个数相加得出;

当接收方收到数据后,尝试判断前三个数加起来是否等于第四个数,等于则证明数据是正确无误的.

下面的异或校验有些类似于深海举的这个例子,只不过区别是:

例子中校验位是用加法得出, 异或校验中的校验位是用异或得出;

发送方加校验位:

将 thisData 前三个数据 异或后得出校验位,并放在这三个数据后

byte[] thisData = new byte[4];
thisData[0] = (byte) 0x00;
thisData[1] = (byte) 0x01;
thisData[2] = (byte) 0x02;
thisData[3] = (byte) (thisData[0] ^ thisData[1] ^ thisData[2]);//校验位

接收方验证校验位:

第一个参数传入校验位曾经校验过的数据;

第二个参数传入校验位

当异或结果等于0 表示校验成功

    //开始校验if (!isVerifyYes(new byte[]{data[0], data[1], data[2]}, data[3])){// 校验不通过}/***Author:XingHai.Zhao*Purpose: 分包数据校验位是否通过验证* @return*/private boolean isVerifyYes(byte[] bytes, byte verify){for(int i=0; i<bytes.length;i++){verify = (byte) (verify^bytes[i]);}return verify==0;}

Java byte数组异或校验相关推荐

  1. java byte数组与String互转

    java byte数组与String互转 CreationTime--2018年7月6日14点53分 Author:Marydon 1.String-->byte[] 方法:使用String.g ...

  2. java byte数组转int数组_Java任意长度byte数组转换为int数组的方法

    前言 嗯.最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了.撒花. Java的位运算以及byte数组与其他类型数据的转换比c/c++感觉麻烦一些. ...

  3. Java byte数组与十六进制字符串互转

    Java byte数组与十六进制字符串互转 博客分类: Java Javajava 十六进制java hex Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64 ...

  4. Java 进行BCC异或校验

    功能是将传进去的一组十六进制字符串,将其转换成十六进制的异或值 如: hex 31353738 return 1578 public static String getBCC(String hex) ...

  5. Java 实现XOR(异或)校验

    XOR校验也称为异或校验: 简介 XOR:异或是一种基于二进制的位运算,用符号XOR或者 ^ 表 运算 相同为0,不同为1 例如: 1^1 = 0 1^0 = 1 0^0 = 0 1^0 = 规则特点 ...

  6. java 字节 操作_实例解析Java byte数组操纵方式代码

    字节数组的关键在于它为存储在该部分内存中的每个8位值提供索引(快速),精确的原始访问,并且您可以对这些字节进行操作以控制每个位. 坏处是计算机只将每个条目视为一个独立的8位数 - 这可能是你的程序正在 ...

  7. java byte数组string_byte数组和String之间的转化

    JAVA里面关于byte数组和String之间的转换问题 把byte转化成string,必须经过编码. 例如下面一个例子: import java.io.UnsupportedEncodingExce ...

  8. java byte数组 初始化_Java根据byte数组,生成文件

    根据byte数组,生成文件 自己写的小案例,找个地方记录一下 package com.seesun2012.utils; import java.io.BufferedOutputStream; im ...

  9. java byte数组操作_Byte数组操作方法集(Java.Net)

    在velocity优化时由于要将String转化为byte,所以就会涉及到一些针对byte数组的操作需要,如在一个数组中查找一个小数组.数组替换.数组扩展等操作,下面这个类就提供了这样一组方法,而且性 ...

最新文章

  1. CircularFloatingActionMenu
  2. 点云分割 PointCloudSegmentation测试笔记
  3. shell下function报错
  4. 257. Binary Tree Paths
  5. SAP HANA Cloud 简介
  6. python中布尔型的值_在python中对于bool布尔值的取反操作
  7. 安卓USB开发教程 二 USB Host
  8. 用火车头采集小游戏网站教程[转载]
  9. kohonen | SOM:自组织映射聚类法(1)
  10. 动态规划与数学方程法解决楼层扔鸡蛋问题
  11. pythonrequests证书_requests的ssl证书验证、身份认证、cert文件证书
  12. Android中缓存记忆
  13. 硅谷战争:苹果、Google和微软上演三国演义
  14. Android日历控件方法,Android日历控件的实现方法
  15. Introduction to Linear Optimization 2.1 多面体和凸集
  16. altium designer 入门视频教程 制作pcb教程视频
  17. 为什么说Java匿名内部类是残缺的闭包
  18. 程序员笔试笔记c++
  19. jQuery插件jquery.fullPage.js
  20. 计算机控制技术专业全球排名,2019QS世界大学专业排名,快来看看!

热门文章

  1. matlab 让数组每个元素重复出现
  2. Java代码小片段(二)
  3. OpenJDK各版本下载
  4. 纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等)20种类型
  5. sed按照匹配删除某些行
  6. A Survey of Learning on Small Data(一)
  7. 2021.03.17模块
  8. C++静态成员变量在内存中的存储方式
  9. 使用的一些支持swift3.0的开源库
  10. js方法padStart()和padEnd()使用示例