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 サイトの他の関連記事を参照してください。