Самостоятельно написанные алгоритмы представляют собой угрозу безопасности, и их трудно поддерживать.
MD5 небезопасен .
Используйте алгоритм bcrypt, предоставленный jBcrypt (с открытым исходным кодом):
// Hash a password
String hashed = BCrypt.hashpw(password, BCrypt.gensalt());
// Check that an unencrypted password matches or not
if (BCrypt.checkpw(candidate, hashed))
System.out.println("It matches");
else
System.out.println("It does not match");
Если вы используете Maven, вы можете получить библиотеку, вставив следующую зависимость в ваш pom.xml (если доступна более новая версия, пожалуйста, дайте мне знать) :
<dependency>
<groupId>de.svenkubiak</groupId>
<artifactId>jBCrypt</artifactId>
<version>0.4.1</version>
</dependency>