La primera respuesta obvia es, por supuesto, "El hash de 512 bits es mejor" .
Una respuesta más considerada se agregaría a eso: "... si la entrada es lo suficientemente larga" . La razón es que si bien deseamos que el mundo y los hashes dentro de ese mundo sean perfectos, generalmente es más difícil generar una distribución casi perfecta, de apariencia aleatoria, en una salida mayor dada una pequeña entrada. Por lo tanto, un hash más largo puede tener propiedades indeseables en comparación con uno más corto si se le da una entrada demasiado corta.
Una respuesta más práctica preguntaría: ¿estás obligado a cumplir años? Si no es así, olvídate del problema y solo usa el hash de 128 bits, que es más rápido y usa menos almacenamiento.
Si un ataque de cumpleaños puede ser un problema para usted (¿firmas?) definitivamente no querrá usar un hash de 128 bits (o menor) porque 2 64 es un número que es bastante factible como un ataque.
Aparte de eso, a menos que parte de la información involucrada sea tan inmensamente valiosa que una o varias de las naciones más grandes del mundo dedicarán la mayor parte de sus recursos y sus supuestas computadoras súper cuánticas durante varios años para forzar la fuerza bruta de una sola persona. Uno de sus hashes (¿qué tan importante es usted?), cualquier hash no roto es, en la práctica, tan bueno como cualquier otro en cuanto a la longitud.
No importa si un atacante tiene que realizar 2 pasos 127 o 2 511 o 2 10000000 .
2 127 es, por todos los medios, poco práctico e inasequible (para cada escenario realista), si es posible.