0. Nanoid üçüncü taraf kütüphanesini kullanma [YENİ!]
JavaScript için küçük, güvenli, URL dostu, benzersiz bir dize kimliği oluşturucu
https://github.com/ai/nanoid
import { nanoid } from "nanoid";
const id = nanoid(48);
1. Base 64 URL ve Dosya Adı Güvenli Alfabesi ile Kodlama
Sayfa 7 / RCF 4648 , 64 numaralı URL'de URL güvenliği ile nasıl kodlanacağını açıklar. İşi yapmak için base64url gibi mevcut bir kütüphaneyi kullanabilirsiniz .
Fonksiyon şöyle olacaktır:
var crypto = require('crypto');
var base64url = require('base64url');
/** Sync */
function randomStringAsBase64Url(size) {
return base64url(crypto.randomBytes(size));
}
Kullanım örneği:
randomStringAsBase64Url(20);
// Returns 'AXSGpLVjne_f7w5Xg-fWdoBwbfs' which is 27 characters length.
Döndürülen dize uzunluğunun boyut bağımsız değişkeniyle eşleşmeyeceğini unutmayın (boyut! = Son uzunluk).
2. Sınırlı karakter kümesinden rasgele değerleri şifreleme
Bu çözümle üretilen rastgele dizenin eşit olarak dağıtılmadığına dikkat edin.
Ayrıca, bunun gibi sınırlı bir karakter kümesinden güçlü bir rastgele dize oluşturabilirsiniz:
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');
}
Kullanım örneği:
randomAsciiString(20);
// Returns 'rmRptK5niTSey7NlDk5y' which is 20 characters length.
randomString(20, 'ABCDEFG');
// Returns 'CCBAAGDGBBEGBDBECDCE' which is 20 characters length.