Cryptographic hash algorithms such as MD2
, MD4
, MD5
, MD6
, HAVAL-128
,
HMAC-MD5
, DSA
(which uses SHA-1
), RIPEMD
, RIPEMD-128
, RIPEMD-160
,
HMACRIPEMD160
and SHA-1
are no longer considered secure, because it is possible to have collisions
(little
computational effort is enough to find two or more different inputs that produce the same hash).
The hashed value is used in a security context like:
There is a risk if you answered yes to any of those questions.
Safer alternatives, such as SHA-256
, SHA-512
, SHA-3
are recommended, and for password hashing, it's even
better to use algorithms that do not compute too "quickly", like bcrypt
, scrypt
, argon2
or pbkdf2
because it slows down brute force attacks
.
MessageDigest md = MessageDigest.getInstance("SHA1"); // Sensitive
MessageDigest md = MessageDigest.getInstance("SHA-512"); // Compliant