Javascript 密码生成器,如何使其返回足够强的密码
我创建了一个简单的密码生成器,它也支持强度检查。然而,如果它不能生成足够强的密码,我很难决定它应该如何运行。此时,它只显示一条创建失败消息 如果创建的密码不够强,我应该定义密码创建规则还是让函数重新启动?如有任何意见、建议或线索,我们将不胜感激。谢谢 代码可以在下面找到Javascript 密码生成器,如何使其返回足够强的密码,javascript,ecmascript-6,Javascript,Ecmascript 6,我创建了一个简单的密码生成器,它也支持强度检查。然而,如果它不能生成足够强的密码,我很难决定它应该如何运行。此时,它只显示一条创建失败消息 如果创建的密码不够强,我应该定义密码创建规则还是让函数重新启动?如有任何意见、建议或线索,我们将不胜感激。谢谢 代码可以在下面找到 'use strict'; let generatePassword = function(passwordLength = 10) { let alphabetString = "QWERTYUIOPASDFGHJ
'use strict';
let generatePassword = function(passwordLength = 10) {
let alphabetString = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890-_=+[]{}!@#$%^&*();:'|\,<.>/?`",
alphabet = alphabetString.split("",),
passwordArray = [],
getRandomSymbol = function() {
return alphabet[Math.floor(Math.random()*alphabet.length)]
};
for (let i = 0; i < passwordLength; i++) {
passwordArray.push(getRandomSymbol());
}
let password = passwordArray.join(""),
passwordStrengthCheck = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})");
if (password.match(passwordStrengthCheck)) {
return console.log(`Your password is: ${password}`);
} else {
console.log("Failed to generate a strong enough password");
}
}
// Function call sample:
generatePassword();
“严格使用”;
让generatePassword=函数(passwordLength=10){
让alphabetString=“QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890-\=+[]{}!@$%^&*():“\\,/?”,
字母表=字母表字符串拆分(“,”),
passwordArray=[],
getRandomSymbol=函数(){
返回字母表[Math.floor(Math.random()*alphabet.length)]
};
for(设i=0;i
要确保密码至少包含所有组的一个符号,请执行以下操作:
all
let generatePassword = function(passwordLength = 10) {
let capitals = "QWERTYUIOPASDFGHJKLZXCVBNM";
let small = "qwertyuiopasdfghjklzxcvbnm";
let digits = "1234567890";
let symbols = "-_=+[]{}!@#$%^&*();:'|\,<.>/?`",
let all = capitals + small + digits + symbols;
getRandomSymbol = function(sourceString) {
return sourceString[Math.floor(Math.random()*sourceString.length)]
};
alphabet = alphabetString.split("",),
passwordArray = [],
passwordArray.push(getRandomSymbol(capitals));
passwordArray.push(getRandomSymbol(small));
passwordArray.push(getRandomSymbol(digits));
passwordArray.push(getRandomSymbol(symbols));
for (let i = 0; i < passwordLength - 4; i++) {
passwordArray.push(getRandomSymbol(all));
}
shuffle = function (a) {
for (let i = a.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[a[i], a[j]] = [a[j], a[i]];
}
return a;
}
let password = shuffle(passwordArray).join(""),
passwordStrengthCheck = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})");
if (password.match(passwordStrengthCheck)) {
return console.log(`Your password is: ${password}`);
} else {
console.log("Failed to generate a strong enough password");
}
}
let generatePassword=函数(passwordLength=10){
让大写字母=“qwertyuiopasdfghjklzxcvnm”;
设为small=“qwertyuiopasdfghjklzxcvnm”;
设为digits=“1234567890”;
让symbols=“-\=+[]{}!@$%^&*();:'|\,/?`”,
全部=大写+小写+数字+符号;
getRandomSymbol=函数(sourceString){
返回sourceString[Math.floor(Math.random()*sourceString.length)]
};
字母表=字母表字符串拆分(“,”),
passwordArray=[],
push(getRandomSymbol(大写));
push(getRandomSymbol(小));
push(getRandomSymbol(数字));
push(getRandomSymbol(symbols));
for(设i=0;i0;i--){
常数j=数学楼层(数学随机()*(i+1));
[a[i],a[j]=[a[j],a[i]];
}
返回a;
}
让password=shuffle(passwordArray).join(“”),
passwordStrengthCheck=newregexp(“^(?=.[a-z])(?=.[a-z])(?=.[0-9])(?=.[!@\$%\^&*])(?=.{8,}”);
if(password.match(passwordStrengthCheck)){
return console.log(`您的密码是:${password}`);
}否则{
log(“未能生成足够强的密码”);
}
}
不太可能,但是如果这是严肃的,而不仅仅是一个测试,考虑一下如果你还没有准备好,不管怎样,你的问题并没有一个明确的问题陈述-如果代码已经工作了,如果你想要一些基于意见的答案,关于它可能如何更好地制定,它更适合于代码评审,而不是here@CertainPerformance它有一个非常明确的问题陈述。“如果生成的密码不够强,程序如何失败”。唯一明智的解决方案是生成一个更强大的密码作为响应,但这已经足够清楚了。对我来说,这听起来像是一个XY问题,那么找到一个总是生成足够强大密码的算法呢?否则,也许你可以“重复这一代直到足够强大”?还可以查看@CertainPerformance链接;)我建议访问npm站点
,并学习一个为您提供此功能的模块。有很多!例如=>无需重新发明车轮!