0. Verwenden einer Nanoid-Drittanbieter-Bibliothek [NEU!]
Ein winziger, sicherer, URL-freundlicher, eindeutiger String-ID-Generator für JavaScript
https://github.com/ai/nanoid
import { nanoid } from "nanoid";
const id = nanoid(48);
1. Base 64-Codierung mit URL und Dateiname Safe Alphabet
Seite 7 von RCF 4648 beschreibt, wie in Base 64 mit URL-Sicherheit codiert wird. Sie können eine vorhandene Bibliothek wie base64url verwenden , um die Aufgabe zu erledigen.
Die Funktion wird sein:
var crypto = require('crypto');
var base64url = require('base64url');
/** Sync */
function randomStringAsBase64Url(size) {
return base64url(crypto.randomBytes(size));
}
Anwendungsbeispiel:
randomStringAsBase64Url(20);
// Returns 'AXSGpLVjne_f7w5Xg-fWdoBwbfs' which is 27 characters length.
Beachten Sie, dass die zurückgegebene Zeichenfolgenlänge nicht mit dem Größenargument übereinstimmt (Größe! = Endlänge).
2. Krypto-Zufallswerte aus einem begrenzten Zeichensatz
Beachten Sie, dass bei dieser Lösung die generierte Zufallszeichenfolge nicht gleichmäßig verteilt ist.
Sie können auch eine starke zufällige Zeichenfolge aus einer begrenzten Anzahl solcher Zeichen erstellen:
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');
}
Anwendungsbeispiel:
randomAsciiString(20);
// Returns 'rmRptK5niTSey7NlDk5y' which is 20 characters length.
randomString(20, 'ABCDEFG');
// Returns 'CCBAAGDGBBEGBDBECDCE' which is 20 characters length.