반응형
Random random = new Random();
random.nextInt();
SecureRandom secureRandom = new SecureRandom();
secureRandom.nextInt();
자바에서 Random 값이 필요할 때
Random을 사용하는 방법과
SecureRandom을 사용하는 방법이 있는데
바로 결론부터 가자면
무조건 SecureRandom을 쓰는 쪽을 권장한다
먼저 Random의 비트 수는 48인 반면
SecureRandom은 128이기 때문에
SecureRandom에서 중복값이 나올 확률이 훨씬 적고
Random의 경우에는
2^48 회를 시도하면 사용한 값을 찾을 수 있는데
SecureRandom의 경우에는
2^128 회의 시도가 필요하다
여기에 Random은 시스템 시간이나
시간을 가지고 시드를 생성하는데 사용하기 때문에
시드를 생성된 시간을 알면 훨씬 뚫리기 쉽지만
SecureRandom은
OS에서 임의의 데이터를 사용해서 훨씬 안전하다
마지막으로 Random은
Linear Congruential Generator를 사용하는데
SecureRandom은 SHA1를 사용한다
뭐가 뭔지 전혀 구별이 안되지만설명을 읽어보면 SHA1가 훨씬 좋은 방식이라고 한다
마지막으로 중요하지 않은 값의 경우에는Random을 쓰건 SecureRandom을 쓰건아무 상관이 없지만
보안이 필요하거나 혹은 민감한 데이터는
반드시 SecureRandom을 사용해 줘야 한다
반응형
'Language > Java' 카테고리의 다른 글
자바 stream mapToLong Long[]으로 받는 방법 (0) | 2022.06.21 |
---|---|
자바 List<Model>에서 Model 내 특정 값만 뽑는 방법 (0) | 2022.06.21 |
자바 배열 List 전체 값 String으로 합치는 방법 (0) | 2022.05.16 |
자바 String 인덱스 시작 끝 지정해서 값 변경방법 (0) | 2022.05.15 |
자바 for문 vs 향상된 for문 (0) | 2022.05.13 |
댓글