El CRC o Verificación de Redundancia Cíclica o Comprobación de redundancia cíclica es una técnica utilizada para detectar errores en datos digitales. El CRC es una función hash que detecta cambios accidentales en los datos de computadora sin procesar que se utilizan comúnmente en las redes de telecomunicaciones digitales y en los dispositivos de almacenamiento. Se basa en la división binaria y también se denomina Suma de Comprobación de Código Polinomial.
En la CRC una cantidad fija de bits de verificación (suma de verificación), se anexa al mensaje que necesita ser transmitido. Los receptores de datos reciben los datos e inspeccionan los bits de verificación en busca de errores. Matemáticamente, los receptores de datos verifican el valor de verificación adjunto al encontrar el resto de la división polinomial de los contenidos transmitidos. Si ha ocurrido un error significa que el mensaje ha sido alterado.
Esta técnica fue inventada por el matemático y científico computacional estadounidense William Wesley Peterson en 1961 y desarrollada por el CCITT (Comité Consultatif International Telegraphique et Telephonique). El polinomio de 32 bits usado en funciones CRC de Ethernet (y otros estándares) fue publicado en 1975
Los polinomios generadores más comunes son:
CRC-12: X12 + X11 + X3 + X2 + X + 1
CRC-16: X16 + X15 + X2 + 1
CRC CCITT V41: X16 + X12 + X5 + 1(este código se utiliza en el procedimiento HDLC)
CRC-32 (Ethernet): = X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1
CRC ARPA: X24 + X23+ X17 + X16 + X15 + X13 + X11 + X10 + X9 + X8 + X5 + X3 + 1
En este ejemplo mostramos cómo calcular la suma de comprobación CRC32 de una matriz de bytes.
import java.util.zip.Checksum;
import java.util.zip.CRC32;
/**
* @see https://www.jc-mouse.net/
* @author mouse
*/
public class Main {
public static void main(String[] args) {
String input = "JC Mouse Bolivia";
byte[] data = input.getBytes();
Checksum checksum = new CRC32();
checksum.update(data, 0, data.length);
long checksumValue = checksum.getValue();
//Resultado
System.out.println("CRC32 : " + checksumValue);
String hex = Long.toHexString(checksumValue).toUpperCase();
System.out.println("CRC32 HEX : " + hex);
}
}
enjoy!!!
En este post desarrollaremos una aplicación que nos permitirá leer un código QR y capturar la información que contiene y[...]
VokoscreenNG es una herramienta versátil y de código abierto para la creación de screencasts, disponible para los sistem[...]
En esta oportunidad dejamos las fuentes del Generador de Código de Control de Impuestos Bolivia (Facturación Virtual), e[...]
Continuando con los tutoriales sobre LibGDX (Librería para el desarrollo de videojuegos), en esta ocasión veremos como e[...]
Microsoft el gigante de la tecnología está tratando de hacer que Python sea más fácil de comprender para aquellos intere[...]
Necesitamos: Android Studio 2 tipos de fuente TTF Agregar Archivo de fuente al proyecto Paso 1: Crear carpeta assets Cli[...]