1. Verwendung der nanoid-Bibliothek von Drittanbietern [NEU!]
Ein kleiner, sicherer, URL-freundlicher, eindeutiger String-ID-Generator für JavaScript
https://github.com/ai/nanoid
import { nanoid } from "nanoid";
const id = nanoid(48);
2. Base 64 Kodierung mit URL und Dateinamen Safe Alphabet
Seite 7 von RCF 4648 beschreibt, wie man in Base 64 mit URL-Sicherheit kodiert. Sie können eine bestehende Bibliothek verwenden wie base64url um die Arbeit zu erledigen.
Die Funktion wird sein:
var crypto = require('crypto');
var base64url = require('base64url');
/** Sync */
function randomStringAsBase64Url(size) {
return base64url(crypto.randomBytes(size));
}
Beispiel für die Verwendung:
randomStringAsBase64Url(20);
// Returns 'AXSGpLVjne_f7w5Xg-fWdoBwbfs' which is 27 characters length.
Beachten Sie, dass die zurückgegebene Stringlänge nicht mit dem Argument size übereinstimmt (size != final length).
3. Krypto-Zufallswerte aus einer begrenzten Anzahl von Zeichen
Beachten Sie, dass bei dieser Lösung die erzeugte Zufallsfolge nicht gleichmäßig verteilt ist.
Sie können auch eine starke Zufallszeichenfolge aus einer begrenzten Anzahl von Zeichen wie dieser erstellen:
var crypto = require('crypto');
/** Sync */
function randomString(length, chars) {
if (!chars) {
throw new Error('Argument \'chars\' is undefined');
}
const charsLength = chars.length;
if (charsLength > 256) {
throw new Error('Argument \'chars\' should not have more than 256 characters'
+ ', otherwise unpredictability will be broken');
}
const randomBytes = crypto.randomBytes(length);
let result = new Array(length);
let cursor = 0;
for (let i = 0; i < length; i++) {
cursor += randomBytes[i];
result[i] = chars[cursor % charsLength];
}
return result.join('');
}
/** Sync */
function randomAsciiString(length) {
return randomString(length,
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789');
}
Beispiel für die Verwendung:
randomAsciiString(20);
// Returns 'rmRptK5niTSey7NlDk5y' which is 20 characters length.
randomString(20, 'ABCDEFG');
// Returns 'CCBAAGDGBBEGBDBECDCE' which is 20 characters length.