Java
자바 랜덤키
NaHyungMin
2021. 5. 13. 16:41
기존에 누군가 구현해놨던 코드가 prefix + random 숫자 5 이었는데 중복 키가 났다.
prefix 배열도 자그만치 51개.
51 x random 5숫자로 처리한게 문제라서 시간 날때 수정했음.
처음에는 그냥 nano나 currentTimeMillis 뽑아서 16진수로 만드려고 시도했다.
구현하다 생각하니 이거나 UUID나 결국 16진수란걸 생각해서 접음.
public static String randomKeys(int length) {
StringBuilder sb = new StringBuilder();
Random random = new Random();
int minA = 65; //A
int maxZ = 90; //Z
for (int i = 0; i < length; i++) {
if (random.nextBoolean() == true) {
sb.append(random.nextInt(10));
} else {
int ascKeyCode = (int) ((Math.random() * (maxZ - minA)) + minA);
sb.append((char)ascKeyCode);
}
}
return sb.toString();
}
그냥 대문자만 뽑는걸로 했는데, 소문자도 사용 가능하다면 로직 좀 추가해야 함.
회사 데이터베이스가 대소문자 가리는 binary 타입이 아니기에 그냥 대문자로만 구현...