package org.springframework.crypto.digest.support; import org.springframework.beans.factory.InitializingBean; import org.springframework.crypto.digest.SaltProvider; import java.security.SecureRandom; /** * @author Rob Harrop */ public class SecureRandomSaltProvider implements SaltProvider, InitializingBean { private String algorithm = "SHA1PRNG"; private String provider; private SecureRandom srand; public void setAlgorithm(String algorithm) { this.algorithm = algorithm; } public String getProvider() { return provider; } public void setProvider(String provider) { this.provider = provider; } public void afterPropertiesSet() throws Exception { if (provider == null) { srand = SecureRandom.getInstance(algorithm); } else { srand = SecureRandom.getInstance(algorithm, provider); } } public byte[] newSalt(int size) { byte[] salt = new byte[size]; srand.nextBytes(salt); return salt; } }