2016-11-29 1 views
0

SecureRandom의 특정 초기화가 "양호"했는지 묻는 질문이 많지만 어림짐작을 찾을 수 없습니다."좋은"SecureRandom을 만드는 가장 좋은 방법은 무엇입니까?

"좋은"무작위 SecureRandom을 만드는 가장 좋은 방법은 무엇입니까?

// Fast 
// Is it a good random? 
SecureRandom secureRandom = new SecureRandom()? 

// Freezes for a few seconds after being used several times - until getting a random enough seed. 
// See http://stackoverflow.com/questions/137212/how-to-solve-performance-problem-with-java-securerandom#comment68934647_137212 
// Is it a good random? 
SecureRandom secureRandom = new SecureRandom(SecureRandom.getSeed(20))? 

// Freezes for a very long time. Waited minutes and still no return :(
SecureRandom secureRandom = new SecureRandom.getInstanceStrong()? 

Other? 

답변

0

특별한 요구 사항이 없으면 모든 것이 충분하다고 생각합니다.

getSeed()에 대한 문서는 말한다 :

이 메소드는, 하위 호환성을 위해 포함되어 있습니다. 호출 원 는 대체 getInstance 메소드 중 하나를 사용하여 SecureRandom 객체를 얻은 다음 generateSeed 메소드를 으로 호출하여 해당 객체에서 시드 바이트를 얻는 것이 좋습니다.

물론 지침에 정확히 따라갈 수 있지만, 다른 예에 대한 점은 확실하지 않습니다.

나는 기억할 수 없지만 오래 전에 알고리즘을 명시 적으로 사용하는 것이 좋습니다. 그래서 대개는

SecureRandom.getInstance("SHA1PRNG") 

에 대해 SHA1 알고리즘을 사용합니다. PRNG는 의사 난수 생성기 용입니다. SHA1이 일반적인 암호화 목적으로 착용되고있는 동안, 나는 당신이 암호 키를 위해 그것을 사용하고 싶을 때도 난수가 여전히 괜찮다고 말하고있다.

관련 문제