使用Javascript生成唯一的随机字符串
我正在创建一个应用程序,有时我需要允许用户生成一些随机字符串。我想强制按以下格式生成:使用Javascript生成唯一的随机字符串,javascript,node.js,Javascript,Node.js,我正在创建一个应用程序,有时我需要允许用户生成一些随机字符串。我想强制按以下格式生成: xxxx-xxxx-xxxx 其中“x”是数字[0-9]或字符[A-Z]。最有效的方法是什么?生成时,我还需要检查它是否已经存在于数据库中,因此我有点担心它所需的时间。您可以使用加密库 var crypto = require('crypto'); //function code taken from http://blog.tompawlak.org/how-to-generate-random-val
xxxx-xxxx-xxxx
其中“x”是数字[0-9]或字符[A-Z]。最有效的方法是什么?生成时,我还需要检查它是否已经存在于数据库中,因此我有点担心它所需的时间。您可以使用加密库
var crypto = require('crypto');
//function code taken from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript
function randomValueHex (len) {
return crypto.randomBytes(Math.ceil(len/2))
.toString('hex') // convert to hexadecimal format
.slice(0,len).toUpperCase(); // return required number of characters
}
var string = randomValueHex(4)+"-"+randomValueHex(4)+"-"+randomValueHex(4);
console.log(string);
检查以下线程:
您可以检查数据库中是否存在该字段。如果有,只需生成一个新令牌。然后再检查一遍。如果你没有庞大的用户群,它存在的可能性很低。因此,长循环检查的概率也很低。您可以使用加密库
var crypto = require('crypto');
//function code taken from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript
function randomValueHex (len) {
return crypto.randomBytes(Math.ceil(len/2))
.toString('hex') // convert to hexadecimal format
.slice(0,len).toUpperCase(); // return required number of characters
}
var string = randomValueHex(4)+"-"+randomValueHex(4)+"-"+randomValueHex(4);
console.log(string);
检查以下线程:
您可以检查数据库中是否存在该字段。如果有,只需生成一个新令牌。然后再检查一遍。如果你没有庞大的用户群,它存在的可能性很低。因此,长循环检查的概率也很低。我们可以将其简化为
require("crypto").randomBytes(64).toString('hex')
我们可以让它变得如此简单,就像
require("crypto").randomBytes(64).toString('hex')
可能的重复项您是否确实需要检查重复项?你可能没那么幸运,算算吧
Math.pow(36,12).toLocaleString()
?你只关心它的唯一性吗?你看过node.js库吗?可能重复的?你真的需要检查重复吗?你可能没那么幸运,算算吧Math.pow(36,12).toLocaleString()
?你只关心它的唯一性吗?你看过node.js库吗?