[Nota: he cambiado esta respuesta para reflejar mejor los aspectos del hash sin ambigüedad.]
El término hashing local sensible es un poco vago y puede significar algunas cosas diferentes e incluso pasar a términos que suenan contradictorios, pero que a menudo no lo son. Permítanme definir 2 técnicas de hash diferentes que pueden alinearse con esto, pero demuestran la diferencia básica con la mayoría de hashing y hashing perceptual.
Hay contexto de hashing desencadenado. Aquí es donde una condición en los datos hace que los datos se tomen y se usen para formar un hash. La elección de la condición y cómo contribuye al hash es clave para qué tan bien los resultados representan los datos. En el mundo forense, hay un SSdeep que funciona bien, pero un trabajo único y los resultados se pueden comparar como cadenas para encontrar archivos o imágenes forenses (no imágenes) que tienen corridas grandes que son casi iguales. Hay otros usos para el hash activado por contexto para acelerar el procesamiento de grandes cantidades o la transmisión de datos. Tampoco está lejos de todo el mundo de la culebrilla en los principios básicos.
- ¿Cuáles son los mejores algoritmos para el análisis de sentimientos?
- Cómo explicar el algoritmo de clasificación de inserción a un niño de 10 años
- ¿Qué algoritmos usa Bing para clasificar los resultados de búsqueda? ¿La patente de Google les impide usar PageRank? Análisis de enlaces en general?
- ¿Son los problemas NP completos también problemas NP difíciles? ¿Por qué?
- ¿Cuál de estos me dará la mejor oportunidad para usar los algoritmos y las estructuras de datos que se enseñan en el desarrollo web de la escuela o el desarrollo móvil?
El segundo es más una dilución binaria de datos. Puede tomar un gran bloque de datos y representarlo como un bit o un pequeño conjunto de bits. En el caso más ingenuo, puede sumar todos los bytes y, como resultado, tomar el bit menos significativo. Ese número único o pequeño de bits se convierte en una parte del hash más grande para la totalidad de los datos. Las secciones que cambian causan un aumento en la distancia de hamming. Las inserciones de datos en el medio pueden requerir cálculos más complicados, pero las regiones aún coincidirán.
Ambas técnicas son insensibles a los cambios locales y sensibles a las ejecuciones locales que se han mantenido igual. Curiosamente, he visto los términos utilizados esencialmente para lo mismo, pero cuando comprendes el pequeño cambio de contexto, te das cuenta de que la diferencia es la perspectiva de la comparación. Vamos a llamarlos hashes difusos.
Los hashes difusos están relacionados con el cambio minimizado en bits. Si el primer 90% es el mismo, mientras que el último 10% es diferente, un hash difuso será casi igual. Realmente no le importa cómo se ven los datos para el usuario.
Entonces tomemos una imagen comprimida. Si recorto una línea estratégica que está cerca del comienzo del archivo, el resto del archivo se verá diferente debido a los cambios de compresión. El hash difuso será completamente diferente antes y después de esa operación, pero el humano no podrá distinguirlo sin mucha observación. Lo mismo es cierto para el escalado, la rotación leve o los cambios de color importantes, incluso sin compresión. Todos los bits cambian, por lo que el hash localmente insensible cambia por completo.
Un hash perceptual no se preocupa por los bits. Toma la representación de la imagen y la reduce a algo que forma un hash. El proceso de ebullición define la inmunidad a diferentes manipulaciones. También funciona en todos los formatos de imagen. Un JPEG, PNG, BMP, TIFF y GIF de la misma imagen coincidirán perceptualmente.
Las aplicaciones para los dos son muy diferentes. La naturaleza de las imágenes hace que los hash perceptuales sean una gran herramienta. Los archivos corruptos o anexos son el espacio de solución principal para muchos hashes difusos.