자바스크립트 랜덤 문자열 만들기 (random)

원본: 자바스크립트에서 랜덤 문자열 생성하는 방법

랜덤 문자열은 사용자 ID, 비밀번호 생성, 토큰 생성 등 다양한 목적으로 사용됩니다.

이 포스트에서는 자바스크립트를 사용하여 무작위 데이터인 랜덤 문자열 생성하는 방법을 알아보겠습니다.

랜덤 문자열 필요성

이는 소프트웨어 개발 시 사용자 ID, 비밀번호, 토큰 등을 구성하는데 필요합니다.

웹 애플리케이션을 만든다고 가정했을 때 각각의 사용자가 로그인 할 수 있도록 임의의 고유 ID를 할당해야하고 비밀번호를 찾는 경우 새 비밀번호를 할당해 줄 수 있습니다.

임의의 문자열은 salt 생성에도 유용하게 쓰입니다. 특정한 알고리즘으로 해시하는 경우 사용자 마다 고유의 salt를 생성하여 해커가 공격하기 더 까다롭게 만들 수 있습니다.

랜덤 문자열 생성 방법

이 섹션에서는 자바스크립트에서 랜덤 문자열 생성하는 세 가지 방법에 대해 살펴보겠습니다.

사용자 정의 함수로 생성

임의의 문자열을 만드는 사용자 지정 함수를 작성할 수 있습니다. 알파벳, 숫자, 특수문자를 랜덤으로 섞어 임의의 문자열을 만드는 함수를 작성합니다.

이렇게 하면 언제든지 함수를 호출하여 문자열을 생성할 수 있습니다.

다음의 예제 코드를 개발자 도구에서 확인해 보겠습니다:

function genRandomString(length) {
   const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()';
   const charLength = chars.length;
   let result = '';

   for ( var i = 0; i < length; i++ ) {
      result += chars.charAt(Math.floor(Math.random() * charLength));
   }

   return result;
}

console.log(genRandomString(12));
랜덤 문자열 생성 함수 예제

위의 예제 코드에서는 genRandomString() 이라는 함수를 작성했습니다.

chars 변수에는 결과 문자열에 사용할 알파벳, 숫자, 특수문자의 집합을 넣었습니다.

그 다음 for 루프를 사용하여 함수의 매개변수로 받은 length의 크기 만큼 문자를 생성합니다.

문자 생성 시 Math.random() 메소드Math.floor() 메소드를 사용하여 chars 변수의 랜덤 문자 위치를 뽑아 result 변수에 추가합니다.

console.log() 메소드를 사용하여 결과를 출력하면 랜덤하게 조합된 문자열을 확인할 수 있습니다.

Math.random으로 랜덤 문자열 생성

Math.random() 메소드는 현재 날짜와 시간을 엔트로피 소스로 사용하여 0 ~ 1 사이의 난수를 리턴합니다.

자바스크립트에서 문자열은 두 개의 큰따옴표(“”) 사이에 있는 일련의 문자로 표현되는데, 이 문자열 뒤에 숫자를 붙여도 문자로 표현되므로 위의 메소드를 사용하여 문자열을 생성할 수 있습니다.

다음의 예제를 확인해 보겠습니다:

let randomString = "";
randomString += Math.random();
randomString += Math.random();
randomString += Math.random();

console.log(randomString);
Math.random() 메소드로 랜덤 문자열 생성

위의 코드를 실행해 보면 숫자와 점으로 이루어진 임의의 문자열을 얻을 수 있습니다.

crypto.getRandomValues로 랜덤 문자열 생성

crypto.getRandomValues() 메소드는 자바스크립트의 Crypto API의 일부로, 암호학적 난수 생성기를 통해 난수 바이트 시퀀스를 리턴합니다.

이 API를 활용하는 다음의 예제 코드를 확인해 보겠습니다:

let randomString = "";

randomString += crypto.getRandomValues(new Uint8Array(32));

console.log(randomString);
crypto.getRandomValues() 메소드 예제

정리

이 포스트에서는 자바스크립트에서 임의의 문자열을 생성하기 위한 세 가지 방법을 알아봤습니다.

무작위성이란 불확실성의 상태로서 일관된 패턴이 없다는 것을 의미합니다. 따라서 예측할 수 없는 모든 것은 무작위로 간주됩니다.

Math.random() 메소드 또는 crypto.getRandomValues() 메소드는 예측할 수 없는 일련의 숫자를 생성하도록 설계되었습니다.

이러한 메소드를 활용해 임의의 문자열을 생성할 수 있습니다.

관련 글

자바스크립트 튜토리얼