반응형
20 랜덤 바이트 배열을 만드는 방법
Java에서 20개의 랜덤 바이트 배열을 만들려면 어떻게 해야 하는가?
다음 방법을 사용해 보십시오.
byte[] b = new byte[20];
new Random().nextBytes(b);
타사 API를 사용하지 않고 암호화된 강력한 무작위 숫자 생성기(또한 스레드 세이프)를 원하는 경우SecureRandom
.
Java 6 & 7:
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[20];
random.nextBytes(bytes);
Java 8(더욱 안전한):
byte[] bytes = new byte[20];
SecureRandom.getInstanceStrong().nextBytes(bytes);
이미 Apache Commons Lang을 사용하고 있는 경우 는 이를 단일 라이너로 만든다.
byte[] randomBytes = RandomUtils.nextBytes(20);
참고: 이것은 암호화된 보안 바이트를 생성하지 않는다.
자바 7은 현재 쓰레드에 격리된 스레드로컬랜덤을 선보였다.
이것은 또 다른 마에릭의 해결책이다.
final byte[] bytes = new byte[20];
ThreadLocalRandom.current().nextBytes(bytes);
시드가 있는 랜덤 객체를 만들고 다음 작업을 수행하여 배열을 랜덤으로 가져오십시오.
public static final int ARRAY_LENGTH = 20;
byte[] byteArray = new byte[ARRAY_LENGTH];
new Random(System.currentTimeMillis()).nextBytes(byteArray);
// get fisrt element
System.out.println("Random byte: " + byteArray[0]);
랜덤 바이트 배열을 만들 수 있는 보다 안전한 방법을 원하는 경우, 예, 가장 안전한 방법은 다음과 같다.
byte[] bytes = new byte[20];
SecureRandom.getInstanceStrong().nextBytes(bytes);
그러나 OS에 따라 시스템에서 사용할 수 있는 랜덤성이 충분하지 않으면 스레드가 차단될 수 있다.다음 솔루션은 차단되지 않는다.
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[20];
random.nextBytes(bytes);
왜냐하면 첫 번째 예는/dev/random
더 많은 무작위성을 기다리는 동안 차단된다(마우스/마우스 및 기타 소스에 의해 생성됨).두 번째 예는 다음과 같다./dev/urandom
막을 수 없을 거야
참조URL: https://stackoverflow.com/questions/5683206/how-to-create-an-array-of-20-random-bytes
반응형
'programing' 카테고리의 다른 글
Vuex Store는 콘솔 또는 클라이언트 브라우저에서 액세스할 수 있는가? (0) | 2022.04.15 |
---|---|
비트 시프트는 엔디안성에 따라 달라지는가? (0) | 2022.04.14 |
Java에서 플로트 및 이중 데이터 유형 (0) | 2022.04.14 |
버튼을 클릭하면 Vuejs가 url로 리디렉션됨 (0) | 2022.04.14 |
Vue 동적 구성 요소 대 라우터 (0) | 2022.04.14 |