¿Hay algún problema de seguridad si envuelve su hash criptográfico con MD5 con fines de almacenamiento?
Por ejemplo:
$hash = md5(hash($password,$salt,$rounds));
Nota: hash()
usa scrypt
o bcrypt
o pbkdf2
internamente.
El único propósito de md5 es para el almacenamiento, ya que solo utiliza 32 bytes frente al almacenamiento de hash sin formato muy largo.
EDITAR: a juzgar por los comentarios a continuación, estoy de acuerdo en que MD5 no es una buena idea ya que es propenso a colisiones, pero ¿qué pasa si uso una mejor función de hashing como SHA512? Aún así, los comentarios a continuación argumentan que en realidad puede debilitarlo, pero ¿puede alguien explicar cómo?
¿Cómo puede esto:
$hash = SHA512(bcrypt($password,$salt,$rounds));
ser más débil que esto:
$hash = bcrypt($password,$salt,$rounds);
?
Me parece que el primero es más fuerte ya que primero debes "crackear" el SHA512 antes de que puedas comenzar a trabajar en el craqueo de bcrypt. ¿Por qué otros dicen lo contrario?