public boolean checkPassword(final String iPassword, final String iHash) {
if (iHash.startsWith(HASH_ALGORITHM_PREFIX)) {
final String s = iHash.substring(HASH_ALGORITHM_PREFIX.length());
return createSHA256(iPassword).equals(s);
} else if (iHash.startsWith(PBKDF2_ALGORITHM_PREFIX)) {
final String s = iHash.substring(PBKDF2_ALGORITHM_PREFIX.length());
return checkPasswordWithSalt(iPassword, s, PBKDF2_ALGORITHM);
} else if (iHash.startsWith(PBKDF2_SHA256_ALGORITHM_PREFIX)) {
final String s = iHash.substring(PBKDF2_SHA256_ALGORITHM_PREFIX.length());
return checkPasswordWithSalt(iPassword, s, PBKDF2_SHA256_ALGORITHM);
}
return MessageDigest.isEqual(digestSHA256(iPassword), digestSHA256(iHash));
}