Mi entendimiento es que un código hash y la suma de comprobación son cosas parecidas – un valor numérico, calculada para un bloque de datos, que es relativamente único.

es decir, La probabilidad de que dos bloques de datos de rendimiento de la misma numérico hash/valor de suma de comprobación es lo suficientemente bajo que puede ser ignorada para los fines de la aplicación.

Así que tenemos dos palabras para la misma cosa, o hay importantes diferencias entre los códigos hash y sumas de comprobación?

  • Para resumir las respuestas a continuación: Un código hash reduce la entrada a un pequeño número, en una forma que minimiza la probabilidad de colisiones. Una suma de comprobación, por otro lado, reduce la entrada a un pequeño número, en una forma que minimiza la probabilidad de colisiones. Usted puede hacer un sonido diferente de los otros por arbitrariamente reformular esa descripción.
  • No, No es lo que las respuestas a continuación decir. Sí, ellos reducen la entrada a un número menor. Pero hay muchas, muchas maneras de hacerlo, ¿cómo elegir qué algoritmo utilizar? Eso depende de tu objetivo. Para resumir la parte superior dos respuestas: el objetivo de una suma de comprobación es «para detectar los errores más comunes». Elegir un algoritmo que produce una diferente de la suma de comprobación, por lo que los errores son «más común» en el escenario. Si usted está preocupado acerca de uno o dos bits controlado, usted puede escoger un algoritmo que garantiza la detección de error específico! Esta es una forma muy específica de trade-off.
  • por otro lado, el código hash cubre una amplia gama de posibles trade-offs. Si nos referimos a un valor que se utiliza en la fabricación de una tabla hash, sabemos que habrá colisiones, un montón de ellos. Esto es muy diferente de trade-off (de una suma de comprobación). Estamos tratando de reducir las colisiones en promedio. No podemos garantizar nada. Puede haber algunas entradas que se diferencian por sólo un poco, sin embargo, producen el mismo hash. Esto está perfectamente bien, si en promedio, se consigue una buena distribución de los valores de hash. Sin embargo, sería inaceptable para una suma de comprobación.
  • Más en lo que los valores de hash se utilizan para el y su enfoque..

10 Comentarios

  1. 64

    Yo diría que un suma de comprobación es necesariamente un hashcode. Sin embargo, no todos los hashcodes hacer buenas sumas de comprobación.

    Una suma de comprobación tiene un propósito especial — verifica o cheques la integridad de los datos (algunos pueden ir más allá de que al permitir corrección de errores). «Bueno» de las sumas de comprobación son fáciles de calcular, y puede detectar muchos tipos de corrupciones de datos (por ejemplo, uno, dos, tres bits erróneos).

    Un hashcode simplemente describe un función matemática que los datos de los mapas para algún valor. Cuando se utiliza como un medio de indexación en las estructuras de datos (por ejemplo, una tabla hash), una baja probabilidad de colisión es deseable.

    • Yo diría más bien: un código hash es una suma de comprobación.
    • Tal vez uno podría ser utilizado como el otro, pero teniendo en cuenta que tienen diferentes objetivos de diseño esto sólo confunde el asunto.
    • no, no todos los hash es una suma de comprobación. Ver ejemplo de cadena de MSalters a continuación.
  2. 40

    Hay un propósito diferente detrás de cada uno de ellos:

    • Código Hash – diseñado para ser al azar a través de su dominio (para minimizar las colisiones en las tablas de hash y tal). Hash criptográfico códigos también están diseñados para ser computacionalmente imposible de revertir.
    • Suma de control diseñado para detectar los errores más comunes en los datos y, a menudo, ser rápido para calcular (para la eficacia de la suma de comprobación rápida flujos de datos).

    En la práctica, las mismas funciones que a menudo son buenos para ambos fines. En particular, un sistema de encriptación fuerte código hash es una buena suma de comprobación (es casi imposible que un error aleatorio se rompa una fuerte función de hash), si usted puede permitirse el coste computacional.

    • También es bueno mencionar que no criptográfico versión de códigos hash puede proporcionar un buen equilibrio entre el tiempo de cálculo (cerca de CRC) y la detección de errores, ya sea intencional o simplemente error de comunicación/bit rot (CRC no se puede esperar para detectar la manipulación intencional debido a que es relativamente fácil intencionalmente el diseño de una colisión).
    • Para mí, la clave de la frase en su respuesta, es que la suma de comprobación es diseñado para detectar los errores más comunes. Sí, eso es. es un algoritmo de hash que ha sido elegido para dar distintos valores de probablemente a la corrupción de los datos. Que es un propósito específico, y conduce a algoritmos específicos, que optimizar para que, dependiendo de los tipos de perturbaciones que uno se preocupa.
  3. 21

    De hecho, existen algunas diferencias:

    • Sumas de comprobación sólo necesitan ser diferentes cuando la entrada es diferente (como a menudo como sea posible), pero es casi igual de importante que son rápidos para calcular.
    • Códigos Hash (para su uso en tablas de hash) tienen los mismos requisitos, y además ellos deben ser uniformemente distribuidos en el espacio de código, especialmente para las entradas que son similares.
    • Criptográficos hash tiene la mucho más estrictos en la exigencia de que, dado un hash, usted no puede construir una entrada que produce este hash. Tiempos de cómputo viene en segundo lugar, y dependiendo de la applicatin incluso puede ser conveniente para el hash a ser muy lento para calcular (a fin de combatir los ataques por fuerza bruta).
    • No creo que las sumas de comprobación ser diferente para diferentes entradas tiene ningún beneficio. Son sólo para la comprobación de la integridad, no para la mezcla.
    • entonces, ¿cómo proponer la comprobación de integridad sin obtener resultados diferentes para las diferentes entradas?
    • Er, tal vez me misworded lo que me dijo? Me refería a la parte donde se dijo que «la medida de lo posible» — sólo estoy diciendo que no hay razón para que ellos se impredecibles o «lejano» como hash. Mientras hay algunos cambio en la suma de comprobación cuando la entrada se somete a un cambio típico, es una multa de la suma de comprobación. En contraste con el hash, que tienen también el objetivo de distribuir las cosas en partes iguales/al azar/impredecible/»lejano» como sea posible en su codominio.
    • Yo creo que simplemente interpretado mal lo que quise decir con «como la medida de lo posible» – yo sólo significaba que las colisiones debe ser tan raro como sea posible, aunque por supuesto, son inevitables. Voy a cambiar la redacción.
    • en un primer momento que no tenía ningún sentido para mí. Si la suma de comprobación, no no tiene una buena distribución con respecto a las posibles valores de suma de comprobación, eso significa que hay algunos valores de suma de comprobación que se devuelven para muchos más de los valores de entrada (que para otras sumas de comprobación). Pero, que reduce la utilidad de la suma de comprobación? [Lo que aumenta las probabilidades de que perturbó los datos se devuelven el mismo resultado, ¿verdad?] Hmm, yo estoy equivocado, estás en lo correcto: la suma de comprobación sólo tiene que ser bueno en la detección de probablemente las perturbaciones. Que no requieren una distribución uniforme en todos los valores.
    • Hace más de 5 años, pero sí, creo que eso es lo que me estaba refiriendo. Las sumas de comprobación no están destinados a proteger contra los adversarios. Incluso si usted puede encontrar un 1 KB cadena que produce la suma de comprobación mismo como un 1 MB de cadena, que no es realmente un problema para la suma de comprobación, ya que la probabilidad de que eso ocurra por accidente es probable que sea prácticamente cero.

  4. 8

    Wikipedia dice bien:

    Suma de comprobación de las funciones están relacionadas con hash
    funciones, las huellas dactilares, la aleatorización
    funciones, y de hash criptográfico
    funciones. Sin embargo, cada uno de los
    conceptos tiene diferentes aplicaciones
    y por lo tanto diferentes objetivos de diseño.
    Dígitos de control y los bits de paridad son
    casos especiales de las sumas de comprobación,
    adecuado para pequeños bloques de datos
    (tales como números de Seguridad Social, banco
    números de cuenta, las palabras de la informática,
    solo bytes, etc.). Algunos
    corrección de errores códigos se basan en
    especial sumas de comprobación que no sólo detectar
    errores comunes, sino también permitir que el
    original de los datos a recuperar en
    ciertos casos.

    • Después de leer eso, todavía me pregunto cuál es la diferencia.
    • Yo diría que son el mismo principio, pero en la práctica siempre se hace desventajas. En diferentes situaciones, diferentes equilibrios de aplicar, por lo que los diferentes enfoques que se utilizan. Realmente no es una justificación para la existencia de dos palabras diferentes, sólo digo que si la búsqueda de buenas técnicas para las sumas de comprobación, usted puede encontrar un conjunto de algoritmos que cuando la búsqueda de códigos hash.
  5. 8

    Hashcodes y sumas de comprobación son utilizados para crear cortos valor numérico de un elemento de datos. La diferencia es que un valor de suma de comprobación debe cambiar, incluso si una pequeña modificación se realiza en el elemento de datos. Para un valor de hash, el requisito es simplemente que en el mundo real de elementos de datos que deben tener distintos valores de hash.

    Un claro ejemplo son las cadenas. Una suma de comprobación para una cadena debe incluir todos y cada uno de los bits, y el orden de los asuntos. Un hashcode por otro lado, a menudo puede ser implementado como una suma de comprobación de un limitado la longitud de prefijo. Eso significaría que «aaaaaaaaaaba» hash de la misma como «aaaaaaaaaaab», pero algoritmos hash puede lidiar con tales colisiones.

  6. 4

    Una suma de comprobación protege contra cambios accidentales.

    Un hash criptográfico protege contra un muy motivada por el atacante.

    Al enviar los bits en el cable, es posible que accidentalmente suceder que algunos bits son volteado, o eliminado, o se ha insertado. Para permitir que el receptor para detectar (o a veces corregir) los accidentes de este tipo, el emisor utiliza una suma de comprobación.

    Pero si se supone que hay alguien inteligente y activamente modificar el mensaje en el cable y desea proteger contra este tipo de atacante, a continuación, utilizar un hash criptográfico (estoy ignorando criptográficamente la firma del hash, o el uso de un canal secundario o tal, pues la cuestión no parece eludir a este).

    • «hash criptográfico» aumenta la confusión entre «hash» y «suma de verificación». «suma de comprobación de cifrado» es mejor, porque no.
  7. 3

    Estos días son intercambiables, pero en los días de antaño una suma de comprobación era una manera muy sencilla técnica donde agregar todos los datos (por lo general en bytes) y la tachuela de un byte en la final con ese valor en.. entonces te espero saber si alguno de los datos originales se habían dañado. Similar a un cheque poco, pero con bytes.

  8. 2

    La diferencia entre el código hash y de la suma de funciones es, que están diseñados para diferentes propósitos.

    • Una suma de comprobación se utiliza para averiguar si algo en la entrada ha cambiado.

    • Un código hash se utiliza para averiguar si algo en la entrada ha cambiado y a tener mucho «distancia» entre el individuo código hash valores como sea posible.

      También, hay podría ser aún más los requisitos para un hash de la función, en oposición a esta regla, como la capacidad para formar árboles/clusters/cubos de hash-los valores del código de principios.

      Y si se agregan algunos compartido inicial de la aleatorización, se obtiene el concepto moderno de cifrado/clave-los intercambios.


    Acerca De La Probabilidad:

    Por ejemplo, supongamos que los datos de entrada, en realidad siempre cambia (el 100% del tiempo). Y vamos a suponer que usted tiene un «perfecto» hash/la suma de comprobación de la función, que genera un 1 bit de hash/valor de suma de comprobación. Por lo tanto, obtendrá diferentes hash/valores de suma de comprobación, el 50% del tiempo, en el que el azar de entrada de datos.

    • Si exactamente 1 bit en su aleatorios de entrada de datos ha cambiado, usted será capaz de detectar que el 100% del tiempo, no importa cuán grande sea la entrada de datos.

    • Si 2 bits en su aleatorios de entrada de datos han cambiado, la probabilidad de detectar «un cambio» se divide por 2, debido tanto a los cambios que podría neutralizar el uno al otro, y no de hash/función de suma de comprobación detecte que los 2 bits son realmente diferentes de los datos de entrada.

    Esto significa que, Si el número de bits de los datos de entrada es varias veces mayor que el número de bits en su hash/valor de suma de comprobación, su probabilidad de realmente conseguir diferentes hash/valores de suma de comprobación, para diferentes valores de entrada, se reduce y no es una constante.

  9. 1

    Que tienden a usar la palabra de la suma de comprobación cuando se hace referencia al código (numérico o de otro tipo) creado para un archivo o conjunto de datos que pueden ser utilizados para de verificación que el archivo de datos o no se ha dañado. El uso más común que la veo es para comprobar que los archivos enviados a través de la red no han sido alterados (deliberada o no).

    • Debido a que las sumas de comprobación no están hechos para ser difícil de revertir, esto sugiere que no sería bueno para la comprobación de si algo se alteraron.
  10. 1

    Aunque hash y sumas de comprobación son similares en que ambos crean un valor basado en el contenido de un fichero de hash no es lo mismo que
    la creación de una suma de comprobación. Una suma de comprobación es el objeto de verificar (check) el
    integridad de los datos e identificar los datos-los errores de transmisión, mientras que un hash
    está diseñado para crear una única huella digital de los datos.

    Fuente: CompTIA ® Security+ Guía de los Fundamentos de la Seguridad de la Red – Quinta Edición – Mark Ciampa -Página 191

Dejar respuesta

Please enter your comment!
Please enter your name here