El propósito de los métodos hash enumerados (métodos proporcionados por objetos comunes para ajustarse a una interfaz utilizada por colecciones estándar) es asignar todos los valores posibles para los cuales se calcula un hash al rango completo de valores válidos del tipo del valor hash . La aleatoriedad utilizada en este mapeo no es por seguridad. La asignación debe ser lo suficientemente aleatoria para que las secuencias y los patrones comunes no provoquen una distribución desigual en el uso de grupos comunes a las colecciones basadas en hash.
Los mapas hash, los multimaps y los conjuntos se pueden usar en esquemas de seguridad más grandes pero, por sí solos, no se pretende que sean seguros. Son simplemente colecciones diseñadas para proporcionar búsquedas indexadas. Los hash utilizados de esta manera proporcionan índices mucho más rápidos que los árboles binarios.
El término hashCode es realmente engañoso de esta manera. La creación de un hash para un tipo de cadena de modo que un mapa de hash se pueda indexar utilizando dicha cadena no es una codificación. El valor hash resultante que se deriva de tal algoritmo de hash puede volver a asignarse a un gran número de valores de objeto, pero la intención en este contexto NO es ocultar esos valores de objeto de un atacante.
En el caso de los algoritmos de hash MD5 o SHA utilizados en los protocolos de seguridad, la intención es crear una probabilidad matemáticamente baja de adivinar el valor de entrada del hash en cualquier número de intentos prácticamente alcanzables. Los métodos proporcionados por los objetos comunes en estos idiomas para que puedan insertarse en colecciones que los indiquen utilizando cubos NUNCA se deben usar para reemplazar los algoritmos hash diseñados para ser usados en protocolos de seguridad.