\documentclass[12pt,a4paper]{article} \usepackage[spanish]{babel} \title{Cyclic Redundancy Check} \author{Nicolás A. Ortega} \begin{document} \maketitle La CRC es un código usado para detectar errores que se suele usar en redes digitales y dispositivos de almacenamiento. Funciona cogiendo el resto de una división polinómica. De esta manera, los cálculos se repiten y si la prueba no concuerda con los anteriores, se hacen correcciones para prevenir corrupción de datos. Es muy popular ya que es simple de implementar en hardware binario y bastante bueno en la detección de errores comunes causadas por ruido. La CRC-32 es un variante del CRC que guarda el código CRC en un variable de 32 bits. En C se implementaría de la manera siguiente: \begin{verbatim} #include uint32_t CRC32(const uint8_t data[], size_t data_length) { uint32_t crc32 = 0xFFFFFFFFu; for (size_t i = 0; i < data_length; i++) { const uint32_t lookupIndex = (crc32 ^ data[i]) & 0xff; crc32 = (crc32 >> 8) ^ CRCTable[lookupIndex]; } crc32 ^= 0xFFFFFFFFu; return crc32; } \end{verbatim} \end{document}