0. नैनोइड थर्ड पार्टी लाइब्रेरी का उपयोग करना [NEW!]
जावास्क्रिप्ट के लिए एक छोटा, सुरक्षित, यूआरएल-अनुकूल, अद्वितीय स्ट्रिंग आईडी जनरेटर
https://github.com/ai/nanoid
import { nanoid } from "nanoid";
const id = nanoid(48);
1. बेस 64 URL और फाइलनाम सुरक्षित वर्णमाला के साथ एन्कोडिंग
RCF 4648 का पेज 7 बताता है कि URL सुरक्षा के साथ बेस 64 में कैसे एनकोड करना है। आप नौकरी करने के लिए बेस 64url जैसी मौजूदा लाइब्रेरी का उपयोग कर सकते हैं ।
समारोह होगा:
var crypto = require('crypto');
var base64url = require('base64url');
/** Sync */
function randomStringAsBase64Url(size) {
return base64url(crypto.randomBytes(size));
}
उपयोग उदाहरण:
randomStringAsBase64Url(20);
// Returns 'AXSGpLVjne_f7w5Xg-fWdoBwbfs' which is 27 characters length.
ध्यान दें कि लौटी स्ट्रिंग लंबाई आकार तर्क (आकार! = अंतिम लंबाई) के साथ मेल नहीं खाएगी।
2. पात्रों के सीमित सेट से क्रिप्टो यादृच्छिक मान
खबर है कि इस समाधान के साथ उत्पन्न यादृच्छिक स्ट्रिंग समान रूप से वितरित नहीं किया गया है।
आप इस तरह के पात्रों के सीमित सेट से एक मजबूत यादृच्छिक स्ट्रिंग का निर्माण कर सकते हैं:
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');
}
उपयोग उदाहरण:
randomAsciiString(20);
// Returns 'rmRptK5niTSey7NlDk5y' which is 20 characters length.
randomString(20, 'ABCDEFG');
// Returns 'CCBAAGDGBBEGBDBECDCE' which is 20 characters length.