Maison  >  Article  >  Java  >  Introduction à l'implémentation du contrôle de redondance cyclique en Java

Introduction à l'implémentation du contrôle de redondance cyclique en Java

黄舟
黄舟original
2017-10-17 09:30:361975parcourir

Bibliothèque d'utilitaires de contrôle CRC Dans le domaine du stockage et de la communication de données, afin de garantir l'exactitude des données, des méthodes de détection d'erreurs doivent être utilisées. L'article suivant vous présente principalement le contrôle de redondance cyclique en Java (Amis qui. si besoin, vous pouvez vous référer aux informations pertinentes sur la mise en œuvre du CRC32). Jetons un coup d'œil ci-dessous.

Avant-propos

Cet article présente principalement le contenu pertinent sur la mise en œuvre du contrôle de redondance cyclique (CRC32) en Java et le partage avec vous. Étude de référence, pas grand chose à dire ci-dessous, jetons un œil à l'introduction détaillée.

Introduction au CRC32

Bibliothèque d'utilitaires de vérification CRC Dans le domaine du stockage et de la communication de données, afin d'assurer l'exactitude des données , il faut utiliser des moyens de détection d'erreurs. Parmi les nombreuses méthodes de détection d’erreurs, le CRC est la plus connue. Le nom complet du CRC est contrôle de redondance cyclique.

CRC32 a une capacité de détection d'erreurs extrêmement forte, une faible surcharge et est facile à mettre en œuvre avec des encodeurs et des circuits de détection. À en juger par ses capacités de détection d'erreurs, la probabilité d'erreurs qu'il ne peut pas détecter n'est que inférieure à 0,0047 %. En termes de performances et de coût, il est de loin supérieur au contrôle de parité et au contrôle de somme arithmétique. Ainsi, dans les domaines du stockage et de la communication de données, le CRC est partout : le FCS (Frame Error Detection Sequence) du célèbre protocole de communication X.25 utilise CRC-CCITT, les logiciels d'outils de compression tels que ARJ et LHA utilisent CRC32, et les logiciels d'outils de compression tels que ARJ et LHA utilisent CRC32. Le lecteur utilise CRC16 pour la lecture et l'écriture, et les formats de stockage d'images courants tels que GIF et TIFF utilisent également CRC comme méthode de détection d'erreurs.

Mise en œuvre du 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();
  }
}

Code de test :


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

Résultat du test :

724585211

Résumé

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn