안전하고 Thread-safe하게 난수 생성하기
·
Java & Kotlin
EduKit 서비스에는 이메일 인증 프로세스가 존재한다. 인증 코드 생성의 보안성을 높이기 위해 고민하던 중, 여러 가지 방법들에 대해서 알게 되었고 특히, Math.Random 메서드 그리고 Random과 SecureRandom 클래스의 차이에 대해 알게 되었다. 먼저 난수가 무엇인지부터 차근차근 살펴보자.난수난수란, 예측 불가능성을 만족하기 위해 무작위하게 생성되는 값을 말한다.난수의 성질무작위성 (Randomness)통계적인 성질을 조사했을 때, 치움침이 없을 경우 무작위하다고 판단한다. 이때, 주의해야할 것이 '무작위하다'와 '예측할 수 없다'는 동일하지 않다는 것이다. 무작위하기 때문에 예측할 수 없다는 것은 불충분 조건이다. 때문에 무작위성만 가지는 난수를 약한 의사난수(Pseudo Rando..