0. nanoid 타사 라이브러리 사용 [NEW!]
JavaScript를위한 작고 안전하며 URL 친화적 인 고유 한 문자열 ID 생성기
https://github.com/ai/nanoid
import { nanoid } from "nanoid";
const id = nanoid(48);
1. URL 및 파일 이름 안전 알파벳으로 Base 64 인코딩
RCF 4648/7 페이지 는 URL 안전을 사용하여 base 64로 인코딩하는 방법을 설명합니다. base64url 과 같은 기존 라이브러리를 사용 하여 작업을 수행 할 수 있습니다 .
기능은 다음과 같습니다.
var crypto = require('crypto');
var base64url = require('base64url');
/** Sync */
function randomStringAsBase64Url(size) {
return base64url(crypto.randomBytes(size));
}
사용 예 :
randomStringAsBase64Url(20);
// Returns 'AXSGpLVjne_f7w5Xg-fWdoBwbfs' which is 27 characters length.
반환 된 문자열 길이는 size 인수 (size! = final length)와 일치하지 않습니다.
2. 제한된 문자 집합에서 암호화 된 임의의 값
이 솔루션을 사용하면 생성 된 임의 문자열이 균일하게 분산되지 않습니다.
다음과 같은 제한된 문자 세트에서 강력한 임의 문자열을 작성할 수도 있습니다.
var crypto = require('crypto');
/** Sync */
function randomString(length, chars) {
if (!chars) {
throw new Error('Argument \'chars\' is undefined');
}
var charsLength = chars.length;
if (charsLength > 256) {
throw new Error('Argument \'chars\' should not have more than 256 characters'
+ ', otherwise unpredictability will be broken');
}
var randomBytes = crypto.randomBytes(length);
var result = new Array(length);
var cursor = 0;
for (var i = 0; i < length; i++) {
cursor += randomBytes[i];
result[i] = chars[cursor % charsLength];
}
return result.join('');
}
/** Sync */
function randomAsciiString(length) {
return randomString(length,
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789');
}
사용 예 :
randomAsciiString(20);
// Returns 'rmRptK5niTSey7NlDk5y' which is 20 characters length.
randomString(20, 'ABCDEFG');
// Returns 'CCBAAGDGBBEGBDBECDCE' which is 20 characters length.