¿Cuál es la diferencia de CRC32 y CRC32C? Sé CRC32 por un largo tiempo, pero acabo de escuchar CRC32C el día de hoy. Son básicamente el mismo método (es decir, tanto en los resultados en el mismo hash para un determinado datos)?

1 Comentario

  1. 35

    El CRC32 encuentra en el zip y un montón de otros lugares se utiliza el polinomio 0x04C11DB7; su forma invertida 0xEDB88320 es quizás mejor conocido, se encuentra a menudo en little-endian implementaciones.

    CRC32C usa otro polinomio (0x1EDC6F41, invierte 0x82F63B78) pero de lo contrario, el cálculo es el mismo. Los resultados son diferentes, naturalmente. Esto también es conocido como el Castagnoli CRC32 y lo más destacado fue encontrado en las nuevas Cpu Intel que puede calcular un total de 32-bit CRC paso en 3 ciclos. Esa es la razón por la CRC32C es cada vez más popular, ya que permite implementaciones avanzadas que efectivamente el proceso de una palabra de 32 bits por ciclo, a pesar de los tres ciclos de latencia (tratamiento 3 flujos de datos en paralelo y el uso de álgebra lineal para combinar los resultados).

    • Hay una manera para convertir entre CRC32 y CRC32C? Mirando algunos parches del kernel con comentarios, puede ser posible, pero no se explica.
    • Si es posible del todo, entonces debe ser al menos tan complicado como la costura Crc bloques consecutivos juntos (como la computación virtual preimagen’). Nunca he visto a un algoritmo como el que, a pesar de su utilidad sería obvio (como usar el hardware instrucciones para CRC32C y el resultado de convertir a la norma (zip) CRC32). La mejor manera de obtener rápidamente respuestas sería publicar esto como una pregunta en su propio derecho. Mi +1 es un hecho. 😉
    • Menor de edad: el crc32 instrucción de proceso 8 bytes (64 bits), así que con sus 3 ciclos de latencia, el rendimiento secuencial es ~2.67 bytes/ciclo, y en el óptimo 3x versión paralela está cerca de 8 bytes/ciclo.

Dejar respuesta

Please enter your comment!
Please enter your name here