[JAVA] Random vs SecureRandom vs ThreadLocalRandom
λμλ 무μμμ±, μμΈ‘ λΆκ°λ₯μ±, μ¬ν λΆκ°λ₯μ± μ±μ§μ΄ μλ€.
무μμμ±μ΄λ μμ΄μ λΉνΈ λΆν¬κ° κ· λ±νκ³ 0κ³Ό 1μ΄ λ±μ₯νλ λΉλκ° λΉμ·ν κ²μ μλ―Ένλ€.
μμΈ‘ λΆκ°λ₯μ±μ΄λ μμ΄μ μΌλΆλ₯Ό λ³΄κ³ λ€μ λΉνΈλ₯Ό μμν μ μμ΄μΌ ν¨μ μλ―Ένλ€.
μ¬ν λΆκ°λ₯μ±μ΄λ κ°μ μμ΄μ λκ°μ΄ μ¬νν μ μλ€λ μ±μ§μ΄λ€. μ΄λ νλμ¨μ΄λ λμλμ΄μΌ νλ€.
무μμμ±λ§ κ°μ§λ λμλ₯Ό μ½ν μμ¬ λμ, μμΈ‘ λΆκ°λ₯μ±μ κ°μ§λ λμλ₯Ό κ°ν μμ¬ λμ, μ¬ν λΆκ°λ₯μ±μ κ°μ§λ λμλ₯Ό μ§μ± λμλΌκ³ νλ€.

μ§μ± λμλ μμ°μ μ΄κ³ μμΈ‘ λΆκ°λ₯ν 물리μ νμ(μνΈλ‘νΌ μμ€)μμ μμ±λ λμλ‘ μμ ν λλ€νκ³ μ¬νμ΄ λΆκ°λ₯νλ€.
νλμ¨μ΄ λμ μμ±κΈ°(HRNG; Hardware Random Number Generator)μ κ°μ΄ 물리μ μ₯μΉλ₯Ό μ¬μ©ν΄ λμλ₯Ό μμ±νλ€.
μμ¬λμλ μκ³ λ¦¬μ¦μ μν΄ μμ±λ λμλ‘ λμμ²λΌλ³΄μ΄μ§λ§
μκ³ λ¦¬μ¦μ μνμ μν΄ κ°μ΄ μ ν΄μ§λ―λ‘ μμ±λ μμ΄μ μΌμ ν μ£ΌκΈ°λ₯Ό κ°μ§λ©°, λ°λΌμ λμμ μμΈ‘ λΆκ°λ₯μ±μ κ°μ§ μ μλ€.
λμΌν Seedλ₯Ό μλ©΄ μμΈ‘μ΄ κ°λ₯νλ€. Seedλ λμ λλ μμ¬λμμ΄μΌ νλ€.
μμ¬λμ μμ±κΈ°(PRNG; Rseudorandom Number Generator)λ₯Ό ν΅ν΄ μμ±νλ€.
μΆμ² :
http://www.parkjonghyuk.net/lecture/2021-1st-lecture/information-protect/chap13.pdf
https://velog.io/@cjy/%EB%82%9C%EC%88%98
λ€νΈμν¬λ³΄μ μμΌμ
μ μ¬λμ : μΌλ°μ μΈ νλ‘λͺ¨μ μΏ ν°, λλ λ°°ν¬κ° νμν μν©μμ μ¬μ©νλ©° λΉ λ₯΄κ³ ν¨μ¨μ μΌλ‘ μ½λλ₯Ό μμ±ν μ μλ€.
μ§μ±λμ : κ³ κ° μν, VIP λμ μΏ ν°, μΏ ν° μμ± μκ³ λ¦¬μ¦μ΄ μ곡νλ μνμ μ΅μννλ€.
λν΄νΈ μλκ°μΌλ‘ μμ€ν μ νμ¬ μκ°μ νμ©νλ€.
μ€λ λ μμ νμ§λ§, μ¬λ¬ μ€λ λμμ λμμ Random μΈμ€ν΄μ€λ₯Ό μ¬μ©νλ©΄ κ²½ν©μ΄ λ°μνμ¬ μ±λ₯μ΄ μ νλ μ μλ€.
λ©ν°μ€λ λ νκ²½μμ ThreadLocalRandomμ μ¬μ©νλ κ²μ κ³ λ €ν΄λ΄μΌ νλ€.μνΈνμ μΌλ‘ μμ νμ§ μκΈ°μ 보μμ λ―Όκ°ν μ ν리μΌμ΄μ μμ μνΈνμ μΌλ‘ μμ ν SecureRandomμ μ¬μ©νλ κ²μ κ³ λ €ν΄λ΄μΌ νλ€.
μνΈνμ μΌλ‘ κ°λ ₯ν λμ μμ±κΈ° (RNG)μ μ 곡νλ€.
ν΅κ³μ λμ μμ±κΈ° ν μ€νΈλ₯Ό μ€μνλ€.
μ¦, SecureRandomμ μ λ¬λ λͺ¨λ μλ μλ£λ μμΈ‘ν μ μμ΄ νλ©° μΆλ ₯ μνμ€λ μνΈνμ μΌλ‘ κ°λ ₯ν΄μΌ νλ€.
μ€λ λμμ 격리λ λμ μμ±κΈ°λ‘ ThreadLocalRandom λ΄λΆμ μΌλ‘ μμ±λ μλλ‘ μ΄κΈ°νλλ©° λ€λ₯Έ λ°©λ²μΌλ‘λ μμ λ μ μλ€.
import java.util.concurrent.ThreadLocalRandom;
int randomNum = ThreadLocalRandom.current().nextInt(min, max + 1);
μ¬λ¬ μμ (μ: κ° a ForkJoinTask)μ΄ μ€λ λ νμμ λ³λ ¬λ‘ λμλ₯Ό μ¬μ©νλ κ²½μ° λ₯Ό μ¬μ©νλ κ²μ΄ νΉν μ ν©νλ€.
μνΈνμ μΌλ‘ μμ νμ§ μλ€.
| [μλ°] JVM ꡬ쑰 (0) | 2025.03.27 |
|---|---|
| [μλ°] μΆμ ν΄λμ€μ μΈν°νμ΄μ€μ λν΄ μ€λͺ ν΄μ£ΌμΈμ (0) | 2025.03.27 |
| [μλ°] Collections API : TreeMap (0) | 2024.10.22 |
| [Java] Reflection (0) | 2024.01.06 |
| [Java] Exception, try-catch-finally, try-with-resources (0) | 2023.12.24 |