nodejs cryptorandomBytes16toStringhex; 生成不不包含数字token 并且不重复
以下是使用nodejs的crypto模块生成不包含数字的token,并且保证不重复的示例代码:
const crypto = require('crypto');
function generateToken() {
let token = '';
do {
token = crypto.randomBytes(16).toString('hex').replace(/\d/g, '').slice(0, 16);
} while (tokens.has(token));
tokens.add(token);
return token;
}
const tokens = new Set();
console.log(generateToken()); // 输出类似于 "aabbccddeeffgghh"
这段代码定义了一个generateToken函数,它会生成一个16位的随机字符串,并且去掉其中的数字。如果生成的字符串已经在tokens集合中出现过,则继续生成直到生成一个不重复的字符串。最后返回生成的字符串。tokens集合用于存储已经生成过的字符串,以便去重。
注意,这种生成方式虽然可以保证不重复,但是由于去掉了数字,所以生成的字符串空间会变小,可能会导致生成的字符串重复的概率增加。如果需要更高的安全性,可以考虑使用更长的字符串或者其他生成方式
原文地址: http://www.cveoy.top/t/topic/e4Is 著作权归作者所有。请勿转载和采集!