0. Sử dụng thư viện bên thứ ba nanoid [MỚI!]
Trình tạo ID chuỗi duy nhất, an toàn, thân thiện với URL, dành cho JavaScript
https://github.com/ai/nanoid
import { nanoid } from "nanoid";
const id = nanoid(48);
1. Mã hóa cơ sở 64 với URL và tên tệp Bảng chữ cái an toàn
Trang 7 của RCF 4648 mô tả cách mã hóa trong cơ sở 64 với an toàn URL. Bạn có thể sử dụng một thư viện hiện có như base64url để thực hiện công việc.
Chức năng sẽ là:
var crypto = require('crypto');
var base64url = require('base64url');
/** Sync */
function randomStringAsBase64Url(size) {
return base64url(crypto.randomBytes(size));
}
Ví dụ sử dụng:
randomStringAsBase64Url(20);
// Returns 'AXSGpLVjne_f7w5Xg-fWdoBwbfs' which is 27 characters length.
Lưu ý rằng độ dài chuỗi được trả về sẽ không khớp với đối số kích thước (size! = Chiều dài cuối cùng).
2. Giá trị ngẫu nhiên của tiền điện tử từ bộ ký tự giới hạn
Coi chừng với giải pháp này, chuỗi ngẫu nhiên được tạo ra không được phân phối đồng đều.
Bạn cũng có thể xây dựng một chuỗi ngẫu nhiên mạnh mẽ từ một bộ ký tự giới hạn như thế:
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');
}
Ví dụ sử dụng:
randomAsciiString(20);
// Returns 'rmRptK5niTSey7NlDk5y' which is 20 characters length.
randomString(20, 'ABCDEFG');
// Returns 'CCBAAGDGBBEGBDBECDCE' which is 20 characters length.