Maison > Java > javaDidacticiel > le corps du texte

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

黄舟
Libérer: 2017-10-17 09:30:36
original
2026 Les gens l'ont consulté

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();
  }
}
Copier après la connexion

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);
  }
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal