Necesito crear un número de PIN seguro criptográficamente en Java usando una identificación secreta para cada usuario.
Este enfoque simple viene a la mente:
int getPin(String secretUserIdStr)
{
String pepper = "randomPepper...";
String seed = secretUserIdStr + pepper;
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG", "SUN");
sr.setSeed(seed.getBytes());
return sr.nextInt(10000);
}
¿Es esta buena idea? ¿Es seguro? Si no, ¿cuál es la mejor práctica?