>Java >java지도 시간 >Java의 순환 중복 검사 구현 소개

Java의 순환 중복 검사 구현 소개

黄舟
黄舟원래의
2017-10-17 09:30:362034검색

CRC 검사 유틸리티 라이브러리 데이터 저장 및 데이터 통신 분야에서는 데이터의 정확성을 보장하기 위해 오류 감지 방법을 사용해야 합니다. 다음 기사에서는 주로 Java Friends의 순환 중복 검사(CRC32)를 소개합니다. 필요한 사람은 아래에서 구현 관련 정보를 참조할 수 있습니다.

머리말

이 글은 주로 Java의 순환 중복 검사(CRC32) 구현에 대한 관련 내용을 소개하고 참고 및 학습을 위해 공유합니다. 세부사항을 소개하겠습니다.

CRC32 소개

CRC 검사 유틸리티 라이브러리 데이터 저장 및 데이터 통신 분야에서는 데이터의 정확성을 보장하기 위해 오류 감지 방법을 사용해야 합니다. 많은 오류 검출 방법 중에서 CRC가 가장 유명합니다. CRC의 정식 명칭은 순환 중복 검사(Cyclic Redundancy Check)입니다.

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);
  }
}

테스트 결과: 52 11

요약

위 내용은 Java의 순환 중복 검사 구현 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.