SlideShare una empresa de Scribd logo
1 de 18
Hashing
Un hash es un valor numérico de longitud fija que identifica datos de forma
unívoca. Los valores hash se utilizan para comprobar la integridad de los datos que
se envían a través de canales no seguros.
Puede compararse el valor hash
de los datos recibidos con el valor
hash de los que se enviaron para
determinar si se alteraron los
mismos.
Funciones Hashing
Una función Hash toma como entrada un
mensaje de cualquier tamaño y, aplicando
una serie de operaciones aritméticas y lógicas
consigue otro mensaje, siempre de igual
tamaño y por lo general muy reducido, 128 o
160 bits.
Por ejemplo. Para que la función hash sea
buena, un mínimo cambio en el mensaje de
entrada, debe producir un notable cambio en
el de salida y por supuesto, debe ser
imposible conocer el mensaje original a partir
del mensaje resumen.
Funciones Hashing
Una función de Hash es una caja negra
que tiene como entrada una llave y como
salida una dirección.
El hashing es similar al indexamiento en
el sentido de asociación entre llaves y
direcciones relativas de registros; pero
difiere de los índices en 2 cosas:
1. La dirección generada por Hash suele ser aleatoria (random).
• No hay una relación aparente entre la llave y la localización del registro
correspondiente
2. El Hash permite que 2 llaves puedan producir la misma salida --> direcciones iguales, a
esto se le conoce como "colisión".
Funciones de Hashing más difundidas
FUNCIÓN BITS DESCRIPCIÓN
MD5 128 La codificación del MD5 de 128 bits es representada
típicamente como un número de 32 dígitos
hexadecimal
SHA-1 160 La codificación SHA-1 de 160 bits es representada
típicamente como un número de 40 dígitos
hexadecimal
RIPEMD160 160 Los hashes de 160 bits RIPEMD (también llamados
resúmenes RIPE del mensaje) se representan
típicamente como números en hexadecimal 40 dígitos
Ejemplos de Hashing
Colisiones
• Una importante desventaja de hashing es que el conjunto de posibles claves es
siempre mayor al número de espacios disponibles. Es decir, dos o más claves
pueden asignarse a la misma dirección en la tabla de hash.
• Cuando dos claves se direccionan a la misma dirección o bucket se dice que hay
una colisión, y a las claves se les denomina sinónimos.
Cuando hay colisiones se requiere de un proceso
adicional para encontrar una posición disponible
para la clave. Esto obviamente degrada la eficiencia
del método, por lo que se trata de evitar al máximo
esta situación.
Una función de hashing que logra evitar al 100% las
colisiones es conocida como hashing perfecto.
Colisiones
Colisiones
Ahora bien, cuando se tienen dos números que generan la misma dirección se
tiene una colisión. Por lo tanto se necesita solucionar la colisión. Tenemos dos
tipos de direccionamiento:
• 1) Direccionamiento Abierto.
Este tipo de solución de colisiones consiste en colocar en la siguiente posición
vacía el número que generó la colisión.
Posición 1 2 3 4 5 6
31 41 13
Números a insertar: 31, 41, 13:
Colisiones
2. Direccionamiento Cerrado:
Este tipo de solución de colisiones no se tiene ningún problema con que se
repita la misma dirección, utilizando el uso de listas.
Colisiones
Truncamiento:
• Ignora parte de la clave y se utiliza la parte restante directamente como índice
(considerando campos no numéricos y sus códigos numéricos).
• Si las claves, por ejemplo; son enteros de ocho dígitos y la tabla de transformación
tiene mil posiciones, entonces el primero, segundo y quinto dígitos desde la
derecha pueden formar la función de conversión. Ejemplo: 72588495 se convierte
en 895. El truncamiento es un método muy rápido, pero falla para distribuir las
claves de modo uniforme.
Colisiones
Plegamiento:
La técnica de plegamiento consiste en la partición de la clave en diferentes partes y la
combinación de las partes en un modo conveniente ( a menudo utilizando suma o
multiplicación) para obtener el índice.
• Ejemplo:
13000000 --> 130=130+000+00
12345678 --> 657=123+456+78
71140205 --> 118 --> 1118=711+402+05
13602499 --> 259=136+024+99
25000009 --> 259=250+000+09
Colisiones
Tabla Hash
Una tabla hashes una estructura de datos que
asocia llaves o claves con valores. La
operación principal que soporta de manera
eficiente es la búsqueda: permite el acceso a
los elementos almacenados a partir de una
clave generada. Funciona transformando la
clave con una función hash en un hash, un
número que identifica la posición (casilla o
cubeta) donde la tabla hash localiza el valor
deseado.
Funcionamiento Tabla Hash
 Las operaciones básicas implementadas en
las tablas hash son:
• Inserción
• Búsqueda
 Para usar una tabla hash se necesita:
• Una estructura de acceso directo
(normalmente un arreglo).
• Una estructura de datos con una clave
• Una función hash cuyo dominio sea el
espacio de claves y su rango los números
naturales.
Búsqueda Tabla Hash
Para recuperar los datos, es necesario únicamente
conocer la clave del elemento, a la cual se le aplica la
función hash.
El valor obtenido se mapea al espacio de direcciones
de la tabla.
Si el elemento existente en la posición indicada en el
paso anterior tiene la misma clave que la empleada
en la búsqueda, entonces es el deseado. Si la clave es
distinta, se ha de buscar el elemento según la técnica
empleada para resolver el problema de las colisiones
al almacenar el elemento.
Ventajas Tabla Hash
 La principal ventaja de una tabla hash sobre otras
estructuras de datos es su velocidad. Esta ventaja es
mas aparente cuando el numero de entradas es
grande. Las tablas hash son particularmente
eficientes cuando el numero máximo de entradas
puede ser predicho antes, para que el arreglo pueda
ser asignado una vez y nunca mas ser ajustado.
 Comparada con otras estructuras de arreglos
asociadas, las tablas hash son más útiles cuando se
almacenan grandes cantidades de información.
× Aunque las operaciones en una tabla hash toman
un tiempo constante en promedio, el costo de una
buena función hash puede ser significantemente
mayor al de la búsqueda de una lista o árbol
secuencial. Así, las tablas hash no son efectivas
cuando el numero de entradas es pequeño.
× Las tablas hash almacenan la información en
posiciones pseudo-aleatorias, así que el acceso
ordenado a su contenido es bastante lento.
Desventajas Tabla Hash

Más contenido relacionado

La actualidad más candente

Programación 3: tablas de dispersión
Programación 3: tablas de dispersiónProgramación 3: tablas de dispersión
Programación 3: tablas de dispersiónAngel Vázquez Patiño
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria EstaticaJ M
 
Búsqueda secuencial en tabla ordenada
Búsqueda secuencial  en tabla ordenadaBúsqueda secuencial  en tabla ordenada
Búsqueda secuencial en tabla ordenadaEdwin Chavarria
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos Kaneki04
 
Arboles B y Arboles B+
Arboles B y Arboles B+Arboles B y Arboles B+
Arboles B y Arboles B+neltherdaza
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..NANO-06
 
15 Tablas Hash
15 Tablas Hash15 Tablas Hash
15 Tablas HashUVM
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoJosé Antonio Sandoval Acosta
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoTAtiizz Villalobos
 

La actualidad más candente (20)

Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
 
Programación 3: tablas de dispersión
Programación 3: tablas de dispersiónProgramación 3: tablas de dispersión
Programación 3: tablas de dispersión
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria Estatica
 
Búsqueda secuencial en tabla ordenada
Búsqueda secuencial  en tabla ordenadaBúsqueda secuencial  en tabla ordenada
Búsqueda secuencial en tabla ordenada
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
 
Arboles B y Arboles B+
Arboles B y Arboles B+Arboles B y Arboles B+
Arboles B y Arboles B+
 
Algoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externoAlgoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externo
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 
15 Tablas Hash
15 Tablas Hash15 Tablas Hash
15 Tablas Hash
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
 
Noción de archivo real y virtual
Noción de archivo real y virtual Noción de archivo real y virtual
Noción de archivo real y virtual
 
EXPOSICION HASH
EXPOSICION HASHEXPOSICION HASH
EXPOSICION HASH
 
Tablas Hash
Tablas HashTablas Hash
Tablas Hash
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Listas
ListasListas
Listas
 
Busqueda Binaria
Busqueda BinariaBusqueda Binaria
Busqueda Binaria
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
Ordenamiento parte 2
Ordenamiento parte 2Ordenamiento parte 2
Ordenamiento parte 2
 
Tabla De Transicion
Tabla De TransicionTabla De Transicion
Tabla De Transicion
 

Similar a hashing y colisiones (20)

Busqueda por HASH
Busqueda por HASHBusqueda por HASH
Busqueda por HASH
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Tablas Hash Fash Vmaa
Tablas Hash Fash VmaaTablas Hash Fash Vmaa
Tablas Hash Fash Vmaa
 
BúSqueda Por Hash
BúSqueda Por HashBúSqueda Por Hash
BúSqueda Por Hash
 
Aritmética Modular
Aritmética ModularAritmética Modular
Aritmética Modular
 
Informe aritmetica modular
Informe aritmetica modularInforme aritmetica modular
Informe aritmetica modular
 
Hashing
HashingHashing
Hashing
 
T A B L A D E D I S P E R S I O N (Hash Table)
T A B L A  D E  D I S P E R S I O N (Hash Table)T A B L A  D E  D I S P E R S I O N (Hash Table)
T A B L A D E D I S P E R S I O N (Hash Table)
 
Funcion resumen
Funcion resumenFuncion resumen
Funcion resumen
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Tabla HASH
Tabla HASHTabla HASH
Tabla HASH
 
hashing.ppt
hashing.ppthashing.ppt
hashing.ppt
 
COMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de SimbolosCOMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de Simbolos
 
Metodos de Búsqueda
Metodos de BúsquedaMetodos de Búsqueda
Metodos de Búsqueda
 
tablahash(marialuisa)
tablahash(marialuisa)tablahash(marialuisa)
tablahash(marialuisa)
 

Último

Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 

Último (7)

Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 

hashing y colisiones

  • 1.
  • 2. Hashing Un hash es un valor numérico de longitud fija que identifica datos de forma unívoca. Los valores hash se utilizan para comprobar la integridad de los datos que se envían a través de canales no seguros. Puede compararse el valor hash de los datos recibidos con el valor hash de los que se enviaron para determinar si se alteraron los mismos.
  • 3. Funciones Hashing Una función Hash toma como entrada un mensaje de cualquier tamaño y, aplicando una serie de operaciones aritméticas y lógicas consigue otro mensaje, siempre de igual tamaño y por lo general muy reducido, 128 o 160 bits. Por ejemplo. Para que la función hash sea buena, un mínimo cambio en el mensaje de entrada, debe producir un notable cambio en el de salida y por supuesto, debe ser imposible conocer el mensaje original a partir del mensaje resumen.
  • 4. Funciones Hashing Una función de Hash es una caja negra que tiene como entrada una llave y como salida una dirección. El hashing es similar al indexamiento en el sentido de asociación entre llaves y direcciones relativas de registros; pero difiere de los índices en 2 cosas: 1. La dirección generada por Hash suele ser aleatoria (random). • No hay una relación aparente entre la llave y la localización del registro correspondiente 2. El Hash permite que 2 llaves puedan producir la misma salida --> direcciones iguales, a esto se le conoce como "colisión".
  • 5. Funciones de Hashing más difundidas FUNCIÓN BITS DESCRIPCIÓN MD5 128 La codificación del MD5 de 128 bits es representada típicamente como un número de 32 dígitos hexadecimal SHA-1 160 La codificación SHA-1 de 160 bits es representada típicamente como un número de 40 dígitos hexadecimal RIPEMD160 160 Los hashes de 160 bits RIPEMD (también llamados resúmenes RIPE del mensaje) se representan típicamente como números en hexadecimal 40 dígitos
  • 7. Colisiones • Una importante desventaja de hashing es que el conjunto de posibles claves es siempre mayor al número de espacios disponibles. Es decir, dos o más claves pueden asignarse a la misma dirección en la tabla de hash. • Cuando dos claves se direccionan a la misma dirección o bucket se dice que hay una colisión, y a las claves se les denomina sinónimos.
  • 8. Cuando hay colisiones se requiere de un proceso adicional para encontrar una posición disponible para la clave. Esto obviamente degrada la eficiencia del método, por lo que se trata de evitar al máximo esta situación. Una función de hashing que logra evitar al 100% las colisiones es conocida como hashing perfecto. Colisiones
  • 10. Ahora bien, cuando se tienen dos números que generan la misma dirección se tiene una colisión. Por lo tanto se necesita solucionar la colisión. Tenemos dos tipos de direccionamiento: • 1) Direccionamiento Abierto. Este tipo de solución de colisiones consiste en colocar en la siguiente posición vacía el número que generó la colisión. Posición 1 2 3 4 5 6 31 41 13 Números a insertar: 31, 41, 13: Colisiones
  • 11. 2. Direccionamiento Cerrado: Este tipo de solución de colisiones no se tiene ningún problema con que se repita la misma dirección, utilizando el uso de listas. Colisiones
  • 12. Truncamiento: • Ignora parte de la clave y se utiliza la parte restante directamente como índice (considerando campos no numéricos y sus códigos numéricos). • Si las claves, por ejemplo; son enteros de ocho dígitos y la tabla de transformación tiene mil posiciones, entonces el primero, segundo y quinto dígitos desde la derecha pueden formar la función de conversión. Ejemplo: 72588495 se convierte en 895. El truncamiento es un método muy rápido, pero falla para distribuir las claves de modo uniforme. Colisiones
  • 13. Plegamiento: La técnica de plegamiento consiste en la partición de la clave en diferentes partes y la combinación de las partes en un modo conveniente ( a menudo utilizando suma o multiplicación) para obtener el índice. • Ejemplo: 13000000 --> 130=130+000+00 12345678 --> 657=123+456+78 71140205 --> 118 --> 1118=711+402+05 13602499 --> 259=136+024+99 25000009 --> 259=250+000+09 Colisiones
  • 14. Tabla Hash Una tabla hashes una estructura de datos que asocia llaves o claves con valores. La operación principal que soporta de manera eficiente es la búsqueda: permite el acceso a los elementos almacenados a partir de una clave generada. Funciona transformando la clave con una función hash en un hash, un número que identifica la posición (casilla o cubeta) donde la tabla hash localiza el valor deseado.
  • 15. Funcionamiento Tabla Hash  Las operaciones básicas implementadas en las tablas hash son: • Inserción • Búsqueda  Para usar una tabla hash se necesita: • Una estructura de acceso directo (normalmente un arreglo). • Una estructura de datos con una clave • Una función hash cuyo dominio sea el espacio de claves y su rango los números naturales.
  • 16. Búsqueda Tabla Hash Para recuperar los datos, es necesario únicamente conocer la clave del elemento, a la cual se le aplica la función hash. El valor obtenido se mapea al espacio de direcciones de la tabla. Si el elemento existente en la posición indicada en el paso anterior tiene la misma clave que la empleada en la búsqueda, entonces es el deseado. Si la clave es distinta, se ha de buscar el elemento según la técnica empleada para resolver el problema de las colisiones al almacenar el elemento.
  • 17. Ventajas Tabla Hash  La principal ventaja de una tabla hash sobre otras estructuras de datos es su velocidad. Esta ventaja es mas aparente cuando el numero de entradas es grande. Las tablas hash son particularmente eficientes cuando el numero máximo de entradas puede ser predicho antes, para que el arreglo pueda ser asignado una vez y nunca mas ser ajustado.  Comparada con otras estructuras de arreglos asociadas, las tablas hash son más útiles cuando se almacenan grandes cantidades de información.
  • 18. × Aunque las operaciones en una tabla hash toman un tiempo constante en promedio, el costo de una buena función hash puede ser significantemente mayor al de la búsqueda de una lista o árbol secuencial. Así, las tablas hash no son efectivas cuando el numero de entradas es pequeño. × Las tablas hash almacenan la información en posiciones pseudo-aleatorias, así que el acceso ordenado a su contenido es bastante lento. Desventajas Tabla Hash