Heim  >  Artikel  >  Java  >  Einführung in die Implementierung der zyklischen Redundanzprüfung in Java

Einführung in die Implementierung der zyklischen Redundanzprüfung in Java

黄舟
黄舟Original
2017-10-17 09:30:361974Durchsuche

CRC-Prüfungsdienstprogrammbibliothek Im Bereich der Datenspeicherung und Datenkommunikation müssen Fehlererkennungsmethoden verwendet werden, um die Genauigkeit der Daten sicherzustellen. Der folgende Artikel führt Sie hauptsächlich in die zyklische Redundanzprüfung in Java ein (Freunde, die Wenn Sie es benötigen, können Sie sich auf die relevanten Informationen zur Implementierung von CRC32 beziehen. Schauen wir uns unten um.

Vorwort

In diesem Artikel werden hauptsächlich die relevanten Inhalte zur Implementierung der zyklischen Redundanzprüfung (CRC32) in Java vorgestellt und mit Ihnen geteilt. Referenzstudie, im Folgenden gibt es nicht viel zu sagen, werfen wir einen Blick auf die ausführliche Einführung.

Einführung in CRC32

CRC-Prüfdienstprogrammbibliothek Im Bereich Datenspeicherung und Datenkommunikation, um die Genauigkeit der Daten sicherzustellen Es müssen Mittel zur Fehlererkennung eingesetzt werden. Unter vielen Fehlererkennungsmethoden ist CRC die bekannteste. Der vollständige Name von CRC ist zyklische Redundanzprüfung.

CRC32 verfügt über eine extrem starke Fehlererkennungsfähigkeit, einen geringen Overhead und ist einfach mit Encodern und Erkennungsschaltungen zu implementieren. Gemessen an seinen Fähigkeiten zur Fehlererkennung beträgt die Wahrscheinlichkeit von Fehlern, die es nicht erkennen kann, nur weniger als 0,0047 %. Hinsichtlich Leistung und Kosten ist es der Paritätsprüfung und der arithmetischen Summenprüfung weit überlegen. Daher ist CRC in den Bereichen Datenspeicherung und Datenkommunikation allgegenwärtig: Das FCS (Frame Error Detection Sequence) des berühmten Kommunikationsprotokolls X.25 verwendet CRC-CCITT, Komprimierungstools wie ARJ und LHA verwenden CRC32 und Disk The Das Laufwerk verwendet CRC16 zum Lesen und Schreiben, und gängige Bildspeicherformate wie GIF und TIFF nutzen CRC ebenfalls als Fehlererkennungsmethode.

CRC-Implementierung


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

Testcode:


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

Testergebnis:

724585211

Zusammenfassung

Das obige ist der detaillierte Inhalt vonEinführung in die Implementierung der zyklischen Redundanzprüfung in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn