以下是使用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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录