Creo que su idea de una tabla hash es un poco [desaparecida]. Las tablas hash descomponen las claves en listas que son similares. Por ejemplo:tabla hash basada en la primera letra del nombre, por lo que habría 26 listas. Su hash es la primera letra del nombre, lo que hace que la búsqueda sea más rápida.
md5, sha1 se utilizan para derivar hashes que se utilizan para verificar que los datos no hayan sido alterados. por lo general vienen en versiones de 128 o 160 bits. Por lo tanto, toma datos X y los envía a través de un hash para generar una cadena alfanumérica de 128 bits que debería ser la misma sin importar dónde se haga. Esto suele ser una cuestión de seguridad.
EDITAR: Ampliando la cuestión de cómo derivar claves.
Puede utilizar un módulo de los datos para crear una clave para usar en la fila. En el ejemplo, datos % X donde X es el número total de claves que le gustaría tener. El problema con esto es que X es difícil de encontrar; si tiene 20 elementos, entonces convertir X en 20 es factible y hace que sea una búsqueda rápida ya que cada elemento tiene su propia fila. Pero si tiene 1000 artículos, entonces hacer % 1000 NO es factible. Hacer algo como X =75 funcionaría mejor para esto.