CRC校验实用程序库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段,下面这篇文章主要给大家介绍了关于Java中循环冗余校验(CRC32)实现的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。

前言

本文主要给大家介绍了关于Java实现循环冗余校验(CRC32)的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

CRC32简介

CRC校验实用程序库 在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC是最著名的一种。CRC的全称是循环冗余校验。

CRC32检错能力极强,开销小,易于用编码器及检测电路实现。从其检错能力来看,它所不能发现的错误的几率仅为0.0047%以下。从性能上和开销上考虑,均远远优于奇偶校验及算术和校验等方式。因而,在数据存储和数据通讯领域,CRC无处不在:著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC-CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都用CRC作为检错手段。

CRC实现

package com.jianggujin.codec;

import java.io.IOException;

import java.io.InputStream;

import java.util.zip.CRC32;

/**

* CRC32

*

* @author jianggujin

*

*/

public class HQCRC32

{

private static HQCRC32 crc32 = new HQCRC32();

public static HQCRC32 getInstance()

{

return crc32;

}

private HQCRC32()

{

}

private static final int STREAM_BUFFER_LENGTH = 1024;

public long encrypt(byte[] data)

{

CRC32 crc32 = new CRC32();

crc32.update(data);

return crc32.getValue();

}

public long encrypt(InputStream data) throws IOException

{

final byte[] buffer = new byte[STREAM_BUFFER_LENGTH];

int read = data.read(buffer, 0, STREAM_BUFFER_LENGTH);

CRC32 crc32 = new CRC32();

while (read > -1)

{

crc32.update(buffer, 0, read);

read = data.read(buffer, 0, STREAM_BUFFER_LENGTH);

}

return crc32.getValue();

}

}

测试代码:

import org.junit.Test;

import com.jianggujin.codec.HQCRC32;

public class CRC32Test

{

HQCRC32 crc32 = HQCRC32.getInstance();

@Test

public void encode()

{

byte[] data = "jianggujin".getBytes();

long result = crc32.encrypt(data);

System.err.println(result);

}

}

测试结果:

724585211

总结

java安装报错循环冗余检查_Java中循环冗余校验的实现方式介绍相关推荐

  1. java安装报错循环冗余检查_SQLSERVER2012备份日志报错:”读取失败: 23(数据错误(循环冗余检查)。)”...

    SQLSERVER2012备份日志报错:"读取失败: 23(数据错误(循环冗余检查).)" 问题: SQLSERVER2012数据库,8月6日的LOG自动备份出现问题,之前备份一直 ...

  2. java 安装报错2503_Windows安装Node.js报错:2503、2502的解决方法

    前言 Windows真的是太恶心了!!!不仅会出现大量的垃圾文件,而且有时莫名的安装不上一些软件(正常软件).前久因为想学学Koa2,打算升级下nodejs的版本以体验下ES6.ES7的aync,aw ...

  3. java 安装报错2503,Windows运维之Win10安装msi程序报错2503和2502错误解决方案

    本文主要向大家介绍了Windows运维之Win10安装msi程序报错2503和2502错误解决方案,通过具体的内容向大家展现,希望对大家学习Windows运维有所帮助. 刚升级了系统到win10,重新 ...

  4. java窗口向mysql加信息_Java中如何实现向DBC方式向表中添加数据

    原标题:Java中如何实现向DBC方式向表中添加数据 Java中如何实现向DBC方式向表中添加数据 Java程序JDBC方式向数据库的表添加记录的步骤: 1.新建工程: Java Project 2. ...

  5. java一行输入多个数据类型_Java中的3种输入方式实现解析

    这篇文章主要介绍了Java中的3种输入方式实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.从键盘读取char类型数据 char ch = ...

  6. java实现冗余校验_Java中循环冗余校验(CRC32)的实现

    前言 本文主要给大家介绍了关于Java实现循环冗余校验(CRC32)的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. CRC32简介 CRC校验实用程序库 在数据存储和数据 ...

  7. java处理报错的快捷键_java快捷键

    重要十大快捷键 1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如ap ...

  8. java如何设置网页全屏_java中如何进行全屏方式和窗口方式的转换 详细??

    java 中如何进行全屏模式和窗口模式的转换 代码如下所示: import java.awt.Dimension; import java.awt.DisplayMode; import java.a ...

  9. tui-editor(富文本编辑器插件)安装报错处理方法

    tui-editor安装报错处理方法 项目中yarn或npm install时,tui-editor(富文本编辑器插件)安装报错. 显示 warning tui-editor > highlig ...

  10. Centos7 JDK安装过程中 解决java -version 报错: bash: /home/jdk1.8.0_161/bin/java: Permission denied...

    1.执行Linux命令 -----vim /etc/profile  编辑profile  文件,在里面添加: #set java enviroment JAVA_HOME=/opt/JavaHome ...

最新文章

  1. R绘制带显著性标记的热图
  2. Linux2.6 内核进程调度分析
  3. python中x=x+1的读法-python中xrange和range的区别
  4. 图解Win7下PowerShell初步使用
  5. 【Android】对话框 AlertDialog
  6. C语言 | 二维数组
  7. 大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作
  8. 人工智能 VS 机器学习 VS 深度学习
  9. 英文简历模板计算机专业,计算机专业英文简历模板制作
  10. 推荐top10的免费下载破解软件的网站
  11. flash activex java_Adobe flash player ActiveX和NPAPI和PPAPI 这三个软件有什么区别?哪个是不必要的?...
  12. 英皇考级——听力测试的训练方法
  13. mysql chunk_【MySQL参数】-innodb_buffer_pool_chunk_size
  14. svg图片如何引入vue
  15. 2020-12-02 微信JSAPIV3支付
  16. 百度每个月的收录时间
  17. Suzy找到实习了吗 Day23 | 二叉树最后一节!669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树
  18. MATLAB 太阳系九大行星运行(天文物理)天体仿真(一)
  19. 超简单教你在树莓派上安装opencv(二)
  20. 让域控制器向DNS服务器注册SRV记录

热门文章

  1. 《风暴英雄》游戏体验
  2. MATLAB指纹识别
  3. 如何观看网页flash视频以及下载视频
  4. 谷歌play商店_不断关闭时如何修复Google Play商店
  5. Q8四元数群的正规子群
  6. Hardhat快速上手
  7. git 中 HEAD 概念
  8. Poco库学习——1
  9. PDFium使用分享
  10. 小猫钓鱼(纸牌游戏)-c语言