1. Codage en Base 64 avec l'URL et le nom de fichier en Sécurité de l'Alphabet
Page 7 de RCF 4648 explique comment encoder en base 64 avec l'URL de la sécurité.
Vous pouvez utiliser une bibliothèque existante comme base64url pour faire le travail.
La fonction sera:
var crypto = require('crypto');
var base64url = require('base64url');
/** Sync */
function randomStringAsBase64Url(size) {
return base64url(crypto.randomBytes(size));
}
Exemple d'utilisation:
randomStringAsBase64Url(20);
// Returns 'AXSGpLVjne_f7w5Xg-fWdoBwbfs' which is 27 characters length.
Notez que le retour de la longueur de la chaîne ne correspondra pas à la taille de l'argument (de taille != finale de longueur).
2. Crypto valeurs aléatoires de jeu de caractères limité
Vous pouvez également créer une forte chaîne aléatoire à partir d'un ensemble limité de personnages tels que:
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,
'abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789');
}
Exemple d'utilisation:
randomAsciiString(20);
// Returns 'rmRptK5niTSey7NlDk5y' which is 20 characters length.
randomString(20, 'ABCDEFG');
// Returns 'CCBAAGDGBBEGBDBECDCE' which is 20 characters length.