0. Menggunakan perpustakaan pihak ketiga nanoid [BARU!]
Generator ID string kecil, aman, ramah URL, unik untuk JavaScript
https://github.com/ai/nanoid
import { nanoid } from "nanoid";
const id = nanoid(48);
1. Basis 64 Pengkodean dengan URL dan Nama File Alfabet Aman
Halaman 7 dari RCF 4648 menjelaskan cara menyandikan di pangkalan 64 dengan keamanan URL. Anda dapat menggunakan perpustakaan yang ada seperti base64url untuk melakukan pekerjaan itu.
Fungsinya adalah:
var crypto = require('crypto');
var base64url = require('base64url');
/** Sync */
function randomStringAsBase64Url(size) {
return base64url(crypto.randomBytes(size));
}
Contoh penggunaan:
randomStringAsBase64Url(20);
// Returns 'AXSGpLVjne_f7w5Xg-fWdoBwbfs' which is 27 characters length.
Perhatikan bahwa panjang string yang dikembalikan tidak akan cocok dengan argumen ukuran (ukuran! = Panjang akhir).
2. Nilai acak Crypto dari kumpulan karakter terbatas
Waspadalah bahwa dengan solusi ini string acak yang dihasilkan tidak terdistribusi secara merata.
Anda juga dapat membuat string acak yang kuat dari serangkaian karakter terbatas seperti itu:
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');
}
Contoh penggunaan:
randomAsciiString(20);
// Returns 'rmRptK5niTSey7NlDk5y' which is 20 characters length.
randomString(20, 'ABCDEFG');
// Returns 'CCBAAGDGBBEGBDBECDCE' which is 20 characters length.