`BCryptPasswordEncoder` 預設使用 `SecureRandom`(基於 `/dev/random`)生成鹽值,Linux 熵池不足導致阻塞。
<bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder">
<constructor-arg index="0" value="10" /> <!-- strength -->
<constructor-arg index="1">
<bean class="java.security.SecureRandom" factory-method="getInstance">
<constructor-arg value="SHA1PRNG" />
<constructor-arg value="SUN" />
</bean>
</constructor-arg>
</bean>
# 或者在 JVM 啟動參數添加(推薦,全局生效)
-Djava.security.egd=file:/dev/./urandom
<bean id="passwordEncoder" class="org.springframework.security.crypto.password.StandardPasswordEncoder" />
添加 `-Djava.security.egd=file:/dev/./urandom` 後,Tomcat 啟動從「卡住 3 分鐘」縮減至「10 秒內完成」。
記住:**Security 啟動慢 90% 是 BCrypt + /dev/random 熵不足**,一行 JVM 參數即可治愈。