快速提示:使用节点创建随机字符串
#javascript #编码 #node #softwaredevelopment

Generate random string with Node

您在应用程序上工作了多少次,您需要一个随机的alpha数字字符串?您是否尝试在字符串中提供数字和字符的列表,然后将长度传递以随机生成带循环的字符串?

使用node.js,这可以简单得多。您只需要使用内置的加密库。

const { randomBytes } = require(node:crypto);

function randomString(length) {
  if (length % 2 !== 0) {
    length++;
  }

  return randomBytes(length / 2).toString("hex");
}

const string = randomString(8);
// string = "df5ec630"

这几个问题是传递给RandomBytes方法的长度需要是一个偶数数字,因此可以将其分为一半。否则,返回的字符串将是传递长度的两倍。这就是为什么条件是该功能的一部分。

作为奖励,如果您只需快速需要一个随机字符串即可在应用程序之外使用,则可以进入终端,键入node进入repl,然后添加require('node:node:cryptoâ ).randombytes(8).tostring(hex)。

node
Welcome to Node.js v20.4.0.
Type ".help" for more information.
> require('node:crypto').randomBytes(8).toString('hex')
'568b6620639fdf54'

如果您想生成一个随机字符串而不进入repl,则可以使用以下内容:

node -e “console.log(require(‘node:crypto’).randomBytes(8).toString(‘hex’))

在Mac上,您甚至可以添加| pbCopy到命令将字符串副本直接放在剪贴板上。

node -e “console.log(require(‘node:crypto’).randomBytes(8).toString(‘hex’))” | pbcopy

请记住,当使用终端或repl的命令时,传递到RandomyBytes的长度将是输出的长度的一半。因此,如果您需要8个字符的随机字符串,请通过4个长度。

我希望这个快速的提示很有帮助。如果您看到上述代码的任何优化,或者是否有一种更简单的方法来生成随机字符串。

是否有任何优化。

感谢您的阅读!