es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python: estableciendo el polinomio generador en zlib.crc32

Estoy intentando usar zlib.crc32 para calcular el CRC en Python.
Me gustaría poder establecer el polinomio generador del CRC, pero no puedo encontrar ninguna documentación. Entonces la pregunta es: ¿esto se puede hacer?

Sé que existe la biblioteca crcmod que puede hacer esto, pero en mi caso solo quiero usar bibliotecas estándar de Python y no quiero instalar ninguna biblioteca externa. ¿Hay alguna biblioteca estándar de Python que se pueda usar para calcular el CRC y puedo definir su polinomio generador?

En crcmod se hace así:

import crcmod

crc32 = crcmod.Crc(poly=0x104c11db7, rev=True, initCrc=0, xorOut=0xFFFFFFFF)

crc32.update(bytearray(cadena_de_entrada))

En el código anterior, poly es el polinomio generador.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, la biblioteca zlib en Python no proporciona una forma de establecer el polinomio generador del CRC. La biblioteca utiliza el polinomio estándar utilizado en CRC-32, que es 0x04c11db7.

    Si desea usar un polinomio diferente, deberá utilizar una biblioteca externa como crcmod. Sin embargo, si realmente no desea utilizar una biblioteca externa, podría escribir su propia implementación de CRC con el polinomio deseado.

    Tenga en cuenta que modificar el polinomio generador del CRC puede no ser una buena idea, ya que puede afectar la confiabilidad de la suma de comprobación. El polinomio estándar 0x04c11db7 ha sido ampliamente probado y es ampliamente aceptado en muchas aplicaciones. Entonces, a menos que tenga una buena razón para usar un polinomio diferente, generalmente se recomienda adherirse al estándar.

Comments are closed.