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.
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 es0x04c11db7
.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.