I need to create cryptographically secure PIN number in Java using secret id for each user.
This simple approach comes to mind:
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);
}
Is this good idea? Is it secure? If not, what is the best practice?