使用 JavaScript 中的字母数字字符生成密码
Generate password with alpha numeric characters in JavaScript
我想生成一个包含字母数字字符的随机密码。我写了一个函数,它 returns 一个带有字母数字字符的随机密码。但我只想从提供的字符串中添加 4 个字母数字字符。
已编辑:我知道这不是最好的解决方案,但我已经设法获得了所需的输出,如果有人想亲手编写代码并对其进行优化,那将是真的很有帮助。
function getRandomPassword(length, numberOfNonAlphaNumericChars) {
const passwordDigit = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP1234567890";
const alphaNumericChar = "!@#$%^&*()_-+=[{]};:>|./?";
var temp1 = "";
var temp2 = "";
var pass = "";
if(length < 1 || length > 128) {
console.log("Number Exceeds");
}
if(numberOfNonAlphaNumericChars > length || numberOfNonAlphaNumericChars < 0) {
console.log("Error");
}
for(var i = 0; i < length; i++) {
var x = Math.floor(Math.random() * length);
temp1 += passwordDigit.charAt(x);
}
for(var j = 0; j < numberOfNonAlphaNumericChars; j++) {
var alphaNumericCharPos = Math.floor(Math.random() * numberOfNonAlphaNumericChars);
temp2 += alphaNumericChar.charAt(alphaNumericCharPos);
}
var newPass = [temp1.slice(0, x), temp2, temp1.slice(x)].join('');
console.log(newPass);
return newPass;
}
getRandomPassword(16, 4);
jsfiddle: (https://jsfiddle.net/37rjgfad/11/)
您可以将 select 字符的字母数字字符串减少到仅 4 个字符。
function randomString(length, chars) {
var mask = '', result = '';
if (chars.indexOf('a') > -1) mask += 'abcdefghijklmnopqrstuvwxyz';
if (chars.indexOf('A') > -1) mask += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
if (chars.indexOf('#') > -1) mask += '0123456789';
for(var i = 0; i < 4; i++) {
result += mask[Math.floor(Math.random() * mask.length)];
}
mask = '';
if (chars.indexOf('!') > -1) {
mask += '!@#$%^&*()_-+=[{]};:>|./?';
}
for (var i = 0; i < length - 4; i++) {
result += mask[Math.floor(Math.random() * mask.length)];
}
return result;
}
console.log(randomString(16, 'aA#!'));
console.log(randomString(16, '#aA'));
console.log(randomString(16, '#A!'));
第二次调用函数 returns 前 4 个字符后出现未定义的结果,因为密码限制为 4 个字母数字字符,并且不允许使用符号。
请注意,通过调用 document.write()
,您将首先删除文档,然后附加新文本。您将只能看到您上次编写的文本。因此,我使用了 console.log()
.
这将为您提供 4 个 非 字母数字字符:
function jumble(str) {
return [...str]
.sort(() => Math.random() - 0.5)
.join('')
}
// no change to this function
function randomString(length, chars) {
var mask = '';
if (chars.indexOf('a') > -1) mask += 'abcdefghijklmnopqrstuvwxyz';
if (chars.indexOf('A') > -1) mask += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
if (chars.indexOf('#') > -1) mask += '0123456789';
if (chars.indexOf('!') > -1) mask += '!@#$%^&*()_-+=[{]};:>|./?';
var result = '';
for (var i = length; i > 0; --i) result += mask[Math.round(Math.random() * (mask.length - 1))];
return result;
}
console.log(
jumble(randomString(12, 'aA#') + randomString(4, '!'))
)
如果您想要不同的分布,请根据需要进行修改。例如:
jumble(
randomString(4, 'a')
+ randomString(4, 'A')
+ randomString(4, '!')
+ randomString(4, '#')
)
会给你一个 16 个字符的字符串,每种字符类型恰好包含 4 个字符,或者:
jumble(randomString(12, '!') + randomString(4, 'aA#'))
会给你 12 个 non-alphanumerics 和 4 个字母数字。
我想生成一个包含字母数字字符的随机密码。我写了一个函数,它 returns 一个带有字母数字字符的随机密码。但我只想从提供的字符串中添加 4 个字母数字字符。 已编辑:我知道这不是最好的解决方案,但我已经设法获得了所需的输出,如果有人想亲手编写代码并对其进行优化,那将是真的很有帮助。
function getRandomPassword(length, numberOfNonAlphaNumericChars) {
const passwordDigit = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP1234567890";
const alphaNumericChar = "!@#$%^&*()_-+=[{]};:>|./?";
var temp1 = "";
var temp2 = "";
var pass = "";
if(length < 1 || length > 128) {
console.log("Number Exceeds");
}
if(numberOfNonAlphaNumericChars > length || numberOfNonAlphaNumericChars < 0) {
console.log("Error");
}
for(var i = 0; i < length; i++) {
var x = Math.floor(Math.random() * length);
temp1 += passwordDigit.charAt(x);
}
for(var j = 0; j < numberOfNonAlphaNumericChars; j++) {
var alphaNumericCharPos = Math.floor(Math.random() * numberOfNonAlphaNumericChars);
temp2 += alphaNumericChar.charAt(alphaNumericCharPos);
}
var newPass = [temp1.slice(0, x), temp2, temp1.slice(x)].join('');
console.log(newPass);
return newPass;
}
getRandomPassword(16, 4);
jsfiddle: (https://jsfiddle.net/37rjgfad/11/)
您可以将 select 字符的字母数字字符串减少到仅 4 个字符。
function randomString(length, chars) {
var mask = '', result = '';
if (chars.indexOf('a') > -1) mask += 'abcdefghijklmnopqrstuvwxyz';
if (chars.indexOf('A') > -1) mask += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
if (chars.indexOf('#') > -1) mask += '0123456789';
for(var i = 0; i < 4; i++) {
result += mask[Math.floor(Math.random() * mask.length)];
}
mask = '';
if (chars.indexOf('!') > -1) {
mask += '!@#$%^&*()_-+=[{]};:>|./?';
}
for (var i = 0; i < length - 4; i++) {
result += mask[Math.floor(Math.random() * mask.length)];
}
return result;
}
console.log(randomString(16, 'aA#!'));
console.log(randomString(16, '#aA'));
console.log(randomString(16, '#A!'));
第二次调用函数 returns 前 4 个字符后出现未定义的结果,因为密码限制为 4 个字母数字字符,并且不允许使用符号。
请注意,通过调用 document.write()
,您将首先删除文档,然后附加新文本。您将只能看到您上次编写的文本。因此,我使用了 console.log()
.
这将为您提供 4 个 非 字母数字字符:
function jumble(str) {
return [...str]
.sort(() => Math.random() - 0.5)
.join('')
}
// no change to this function
function randomString(length, chars) {
var mask = '';
if (chars.indexOf('a') > -1) mask += 'abcdefghijklmnopqrstuvwxyz';
if (chars.indexOf('A') > -1) mask += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
if (chars.indexOf('#') > -1) mask += '0123456789';
if (chars.indexOf('!') > -1) mask += '!@#$%^&*()_-+=[{]};:>|./?';
var result = '';
for (var i = length; i > 0; --i) result += mask[Math.round(Math.random() * (mask.length - 1))];
return result;
}
console.log(
jumble(randomString(12, 'aA#') + randomString(4, '!'))
)
如果您想要不同的分布,请根据需要进行修改。例如:
jumble(
randomString(4, 'a')
+ randomString(4, 'A')
+ randomString(4, '!')
+ randomString(4, '#')
)
会给你一个 16 个字符的字符串,每种字符类型恰好包含 4 个字符,或者:
jumble(randomString(12, '!') + randomString(4, 'aA#'))
会给你 12 个 non-alphanumerics 和 4 个字母数字。