JAVA

적절하지 않은 난수 값 사용

주원만쉐 2023. 12. 5. 09:22
728x90

java.lang.Math.random() 메소드,  java.util.Random 클래스 사용을 하면 안된다.
java.security.SecureRandom 클래스를 사용하여 해결해야 한다.

 

불충분 한 랜덤 값 사용

 String userId = applyPerusalDate + String.format(""%06d%03d"", (int)(Math.random()*99999999), applyIdx);

이렇게 사용하지 말자.

 

이렇게 사용하자.

public static String getRandomNum(int size) {

char[] charSet = "123456789".toCharArray();

StringBuffer sb = new StringBuffer();

SecureRandom sr = new SecureRandom();

sr.setSeed(new Date().getTime());

int idx = 0;

int len = charSet.length;

for (int i = 0; i < size; i++) {

idx = sr.nextInt(len);

// 강력한 난수를 발생시키기 위해 SecureRandom을 사용한다.

sb.append(charSet[idx]);

}

return sb.toString();

}

 

728x90