Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 배열관련함수
- PDO #DB접속
- 이클립스 설치
- db접속
- Now()
- sql용어
- DATE_ADD()
- Java 및 이클립스 설치
- CURTIME()
- SQL 중복제거
- JSTL
- MySQL 날짜 관련 함수
- 가상화
- Java환경변수 설정
- strip_tags #html태그제거 #PHP strip_tags
- serializeObject
- DATE_SUB()
- trim #공백 제거 #PHP trim()
- BufferedReader #BufferedWriter
- explode #선택제거 #PHP explode
- apt-get #apt-get 옵션 #apt-get options
- php5.x
- DATE_FORMAT()
- HAVING 절
- PHP달력관련함수
- CURDATE()
- apt #apt 명령어 #apt-get명령어
- 함수정의확인
- 영카트 #테스트메일
- DATEDIFF()
Archives
- Today
- Total
M
Random, SecureRandom 본문
컴퓨터는 기본적으로 정해진 입력에 따라 정해진 값을 낼 뿐이여서 난수를 만들 수 없다. 이를 해결하기 위해 난수 생성 알고리즘을 이용해 난수를 생성한다.
public static void main(String[] args) {
Random ra = new Random();
ra.setSeed(11);
for(int i = 0; i < 10; i++) {
System.out.print(ra.nextInt(20) +" ");
}
}
-> 18 8 11 15 13 7 0 13 13 7
seed(시드)에서 같은 값을 주고 있기 때문에 코드를 재실행 시켜도 아래와 똑같은 결과가 출력이 된다.
따라서 씨앗 값을 대표적으로 현재시간을 이용해 난수가 계속 바뀌도록 설정을 한다.
public static void main(String[] args) {
SecureRandom ra = new SecureRandom();
ra.setSeed(new Date().getTime());
for(int i = 0; i < 10; i++) {
System.out.print(ra.nextInt(20) +" ");
}
}
Random과 SecureRandom의 차이점
java.util.Random
- 48비트를 포함
- 시스템의 시간을 통해 시드로 사용하거나 시드를 생성 (보안에 취약 : 공격자가 시드가 생성 된 시간을 알고 있으면 쉽게 재현이 가능)
java.security.SecureRandom
- 최대 128비트를 포함
- OS에서 임의 데이터를 가져와서 이를 시드로 사용
- SHA1을 사용하여 의사 난수를 생성하는 SHA1PRNG 알고리즘을 구현
728x90
'Java' 카테고리의 다른 글
Java - for문 종류 (0) | 2024.04.02 |
---|---|
Spring 폴더 구조 (0) | 2022.05.27 |
BufferedReader 와 BufferedWriter (0) | 2021.09.10 |
Java 설치 (0) | 2019.11.09 |