Каков был бы лучший подход к созданию 8 символьных случайных паролей, содержащих a-z
, A-Z
и 0-9
?
Абсолютно никакие проблемы безопасности, это просто для разработки прототипа, я просто хочу данные, которые выглядят реалистичными.
Я думал a for (0 to 7) Math.random
произвести коды ASCII и преобразовать их в символы. У Вас есть какие-либо другие предложения?
Вот быстрое динамическое современное решение, которое я думал, что совместно использую
const generatePassword = (
passwordLength = 8,
useUpperCase = true,
useNumbers = true,
useSpecialChars = true,
) => {
const chars = 'abcdefghijklmnopqrstuvwxyz'
const numberChars = '0123456789'
const specialChars = '!"£$%^&*()'
const usableChars = chars
+ (useUpperCase ? chars.toUpperCase() : '')
+ (useNumbers ? numberChars : '')
+ (useSpecialChars ? specialChars : '')
let generatedPassword = ''
for(i = 0; i <= passwordLength; i++) {
generatedPassword += usableChars[Math.floor(Math.random() * (usableChars.length))]
}
return generatedPassword
}
Этот метод дает опции изменить размер и набор символов Вашего пароля.
function generatePassword(length=8, charset="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") {
return new Array(length)
.fill(null)
.map(()=> charset.charAt(Math.floor(Math.random() * charset.length)))
.join('');
}
console.log(generatePassword()); // 02kdFjzX
console.log(generatePassword(4)); // o8L5
console.log(generatePassword(16)); // jpPd7S09txv9b02p
console.log(generatePassword(16, "abcd1234")); // 4c4d323a31c134dd