Recientemente surgió un problema interesante. Nos encontramos con algún código que está usando hashCode()
como una fuente de sal para el cifrado MD5, pero esto plantea la pregunta: ¿hashCode()
devolverá el mismo valor para el mismo objeto en diferentes máquinas virtuales, diferentes versiones de JDK y sistemas operativos? Incluso si no está garantizado, ¿ha cambiado en algún momento hasta ahora?¿Es String.hashCode() portátil entre máquinas virtuales, JDK y sistemas operativos?
EDITAR: me refiero a String.hashCode()
en lugar de la más general Object.hashCode()
, que por supuesto puede ser anulada.
La pregunta me asusta un poco en realidad. La aleatoriedad es exactamente lo que quieres en una fuente de sal en lugar de una implementación consistente. ¿Por qué no simplemente usar Math.random y almacenar el resultado en alguna parte? – jsight