ホームページ >Java >&#&チュートリアル >Java での巡回冗長検査の実装の概要

Java での巡回冗長検査の実装の概要

黄舟
黄舟オリジナル
2017-10-17 09:30:362034ブラウズ

CRC チェック ユーティリティ ライブラリ データ ストレージおよびデータ通信の分野では、データの正確性を確保するために、エラー検出方法を使用する必要があります。次の記事では、主に Java Friends の巡回冗長検査 (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);
  }
}

テスト結果:

724 5852 11

概要

以上がJava での巡回冗長検査の実装の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。