Java byte数组异或校验
异或校验和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数组异或校验相关推荐
- java byte数组与String互转
java byte数组与String互转 CreationTime--2018年7月6日14点53分 Author:Marydon 1.String-->byte[] 方法:使用String.g ...
- java byte数组转int数组_Java任意长度byte数组转换为int数组的方法
前言 嗯.最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了.撒花. Java的位运算以及byte数组与其他类型数据的转换比c/c++感觉麻烦一些. ...
- Java byte数组与十六进制字符串互转
Java byte数组与十六进制字符串互转 博客分类: Java Javajava 十六进制java hex Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64 ...
- Java 进行BCC异或校验
功能是将传进去的一组十六进制字符串,将其转换成十六进制的异或值 如: hex 31353738 return 1578 public static String getBCC(String hex) ...
- Java 实现XOR(异或)校验
XOR校验也称为异或校验: 简介 XOR:异或是一种基于二进制的位运算,用符号XOR或者 ^ 表 运算 相同为0,不同为1 例如: 1^1 = 0 1^0 = 1 0^0 = 0 1^0 = 规则特点 ...
- java 字节 操作_实例解析Java byte数组操纵方式代码
字节数组的关键在于它为存储在该部分内存中的每个8位值提供索引(快速),精确的原始访问,并且您可以对这些字节进行操作以控制每个位. 坏处是计算机只将每个条目视为一个独立的8位数 - 这可能是你的程序正在 ...
- java byte数组string_byte数组和String之间的转化
JAVA里面关于byte数组和String之间的转换问题 把byte转化成string,必须经过编码. 例如下面一个例子: import java.io.UnsupportedEncodingExce ...
- java byte数组 初始化_Java根据byte数组,生成文件
根据byte数组,生成文件 自己写的小案例,找个地方记录一下 package com.seesun2012.utils; import java.io.BufferedOutputStream; im ...
- java byte数组操作_Byte数组操作方法集(Java.Net)
在velocity优化时由于要将String转化为byte,所以就会涉及到一些针对byte数组的操作需要,如在一个数组中查找一个小数组.数组替换.数组扩展等操作,下面这个类就提供了这样一组方法,而且性 ...
最新文章
- CircularFloatingActionMenu
- 点云分割 PointCloudSegmentation测试笔记
- shell下function报错
- 257. Binary Tree Paths
- SAP HANA Cloud 简介
- python中布尔型的值_在python中对于bool布尔值的取反操作
- 安卓USB开发教程 二 USB Host
- 用火车头采集小游戏网站教程[转载]
- kohonen | SOM:自组织映射聚类法(1)
- 动态规划与数学方程法解决楼层扔鸡蛋问题
- pythonrequests证书_requests的ssl证书验证、身份认证、cert文件证书
- Android中缓存记忆
- 硅谷战争:苹果、Google和微软上演三国演义
- Android日历控件方法,Android日历控件的实现方法
- Introduction to Linear Optimization 2.1 多面体和凸集
- altium designer 入门视频教程 制作pcb教程视频
- 为什么说Java匿名内部类是残缺的闭包
- 程序员笔试笔记c++
- jQuery插件jquery.fullPage.js
- 计算机控制技术专业全球排名,2019QS世界大学专业排名,快来看看!