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
- 순열조합중복순열중복조합
- crypto.getrandomvalues()
- 이해할때까지안잔다
- cors origin
- 멀티프로세스 멀티스레드
- 순열java
- crypto.getrandomvalues() 부동소수점
- 중복순열중복조합
- 백트래킹
- javascript 난수생성
- 백트래킹자바
- graphql 예시
- graphql 장단점
- db 인덱스 개념
- 백트래킹java
- 순열조합
- cors시나리오
- 인덱스 알고리즘
- crypto 0이상 1미만
- javascript crypto
- 대칭키 비대칭키
- 백트래킹알고리즘
- 티스토리챌린지
- 인덱스 예시
- cors동작방식
- 오블완
- crypto 난수생성
- graphql 비교
- sop cors
- 조합java
Archives
- Today
- Total
물흐르듯코딩
[Javascript] crypto.getRandomValues() 난수 생성 - 0 이상 1 미만 난수 생성법 본문
Math.random()은 0 이상 1 미만 범위에서 랜덤한 부동소수점 값을 반환하는 함수이다.
이 함수는 암호학적으로 안전한 난수를 제공하지 않기 때문에
보안에 민감한 Math.random 대신 다른 함수를 사용해야 한다.
해결방법
Math.random()을 대신하여 expo-crypto 라이브러리를 설치하여 crypto 함수로 난수를 생성한다. crypto.getRandomValues()를 이용하여 랜덤 숫자가 들어간 배열을 구할 수 있다.
const generateRandom = () => {
let array = new Uint32Array(1);
return crypto.getRandomValues(array)[0] / (0xffffffff + 1);
};
let array = new Uint32Array(1)
array라는 변수에 new Uint32Array(1) 8비트 랜덤 배열 1개를 할당
crypto.getRandomValues(array)[0] / (0xffffffff + 1)
crypto.getRandomValues() 함수를 호출하여 난수를 생성한다.
0 이상 1 미만의 범위값을 얻기 위해 (0xffffffff + 1)을 나눈 후 리턴한다.
0xffffffff는 32비트에서 모든 비트가 1이므로, 4294967295와 같은 값을 나타낸다.
따라서 0xffffffff + 1 대신 4294967296을 사용하여
crypto.getRandomValues(array)[0] / 4294967296
요렇게 표현해도 무방하다.
'FE' 카테고리의 다른 글
[WEB] CORS 개념 및 동작 방식 시나리오 (0) | 2024.06.27 |
---|---|
[javascript] trim() 사용법 - 문자열 양 끝 공백 제거 (0) | 2024.04.23 |
[javascript] Object.assign() 사용법 - 객체 병합과 복제 (2) | 2024.04.20 |
[javascript] 배열 slice() & splice() 사용법 및 예시 (0) | 2024.04.18 |
[javascript] 비밀번호 조건 체크 정규식(regex) 표현 (0) | 2024.04.15 |