2010-07-28 34 views

Respuesta

24

CRC (Cyclic Redundancy Check) es un tipo de checksum, específicamente un dependiente algoritmo posición suma de comprobación (entre otros, como Fletcher's checksum, Adler-32). Como su nombre sugiere, estos también detectan cambios posicionales, lo que los hace más robustos, por lo tanto más utilizados, que otros métodos de suma de comprobación.

+0

CRC no es en absoluto robusto. Su naturaleza posicional lo convierte en una verificación de integridad decente, pero debe usar un hash criptográfico como MD5 si puede pagar su mayor costo computacional. Si el cálculo no es un problema, recomiendo SHA256. Ver también [mi respuesta] (https://stackoverflow.com/a/49115040/519360). –

+0

Los CRC no se diseñaron para resistir colisiones, sino para detectar errores de transmisión y otros errores de lectura. – zaph

12

CRC se refiere a un algoritmo de suma de comprobación específica. Otros tipos de sumas de comprobación son XOR, módulo y todos los varios hash criptográficos.

10

Consulte HowStuffWorks para obtener una buena descripción de ambos y la forma en que difieren.

Desde la página:

comprobación de redundancia cíclica (CRC)

CRC son similares en concepto a las sumas de comprobación, pero utilizan la división polinómica para determinar el valor de la CRC

Se proporciona más información en el enlace anterior, que incluye un ejemplo de cómo se calcula una suma de comprobación.

-1

Jeff Atwood (fundador de desbordamiento de pila) escribió en su puesto Checksums and Hashes blog:

aprendí a apreciar el valor del algoritmo de comprobación de redundancia cíclica (CRC) en mi de 8 bits, 300 archivo de baudios transferir dias. Si el CRC del archivo local coincide con el CRC almacenado en el archivo (o en el servidor), tuve una descarga válida. ¡También aprendí un poco sobre el pigeonhole principle cuando descargué un archivo con un CRC coincidente que estaba dañado!

 

A checksum es un error-detection scheme que típicamente se refiere a una función de hash criptográfica, aunque también incluye CRC. Aquí hay tres tipos diferentes de suma de comprobación:

Cyclic Redundancy Checks como CRC32 son rápidos, pero la colisión propensa. No son robustos al collision attacks, lo que significa que alguien puede tomar un CRC dado y fácilmente una segunda entrada que coincida con él.

Cryptographic hash functions como MD5 (más débil), SHA1 (débil), y SHA256 (fuerte) están específicamente diseñados para ser resistentes a los ataques de colisión. Son preferibles a los CRC en todas las situaciones excepto la velocidad; use el algoritmo más fuerte que pueda pagar computacionalmente.

Key derivation functions como PBKDF2 y bcrypt están diseñados para las contraseñas. Son sumas de comprobación que son costosas de computar para que sean robustas al brute-force attacks.

Ver también este artículo Crypto.SE question on CRC vs SHA1. Wikipedia tiene una página hash function security summary que analiza la propensión a colisiones de varios hashes criptográficos.

+0

Permítanos [continuar este debate en el chat] (https://chat.stackoverflow.com/rooms/166264/discussion-between-adam-katz-and-zaph). –

+0

Checksums no son necesariamente funciones hash criptográficas, pueden ser tan simples como una suma aritmética de los valores de bytes. Consulte [Suma modular] (https://en.wikipedia.org/wiki/Checksum#Modular_sum) y, en general, [Checksum] (https://en.wikipedia.org/wiki/Checksum). Tal vez deba liderar algunas sumas de comprobación WRT de investigación de seguridad. – zaph

+0

@zaph - Me han corregido para varias revisiones, y también incorporé tus otros comentarios a medida que entraban. La suma modular es, de hecho, una suma de comprobación. XOR no lo es. Como señalé en el chat, todavía estoy interesado en tus comentarios constructivos y me gustaría saber cómo puedo convertir tu -1 en un +1. Dejemos de debatir los elementos que ya están solucionados en mi respuesta. –

Cuestiones relacionadas