프론트엔드/Tips

[자바스크립트] 랜덤으로 강력한 비밀번호 만들기

Marshall K 2019. 4. 23. 18:00

결과물 : https://marshall-ku.github.io/Strong-Password-Generator/

깃허브 : https://github.com/marshall-ku/Strong-Password-Generator


무작위로 섞인 스트링을 만드는 스크립트입니다.

크롬에서 특정 사이트에 회원가입을 하려 하면 어차피 크롬에 저장되니 어려운 패스워드 쓰라면서 패스워드를 만들어주길래, 재밌는 기능 같아 만들어봤습니다.


document.getElementById("psbtn").addEventListener("click", function () {
const pwoutput = document.getElementById("password");

let password = "",
char,
chars = "";

if (document.getElementById("number").checked) {
chars = chars + "0123456789" // 숫자 추가
}
if (document.getElementById("symbol").checked) {
chars = chars + "!@#$%^&*()_+-=`~[]{};:'\",.<>/\\|" // 각종 기호 추가
}
if (document.getElementById("capital").checked) {
chars = chars + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" // 대문자 추가
}
if (document.getElementById("small").checked) {
chars = chars + "abcdefghijklmnopqrstuvwxyz" // 소문자 추가
}
if (document.getElementById("rs").checked) {
chars = chars.replace(/01|i|I|O/g, "") // 헷갈리는 스트링 제거
}

for (let i = 0; i < document.getElementById("pwlength").value; i++) {
const random = Math.floor(Math.random() * chars.length);
char = chars.charAt(random);
password = password + char
}

pwoutput.innerText = password;

if (document.getElementById("as").checked) {
const select = document.createRange()
select.selectNode(pwoutput),
window.getSelection().removeAllRanges(),
window.getSelection().addRange(select),
document.execCommand("copy");
}
})


사용한 소스코드입니다.


체크박스 체크 여부 확인해서 패스워드 제작에 사용할 문자를 모은 팔레트 같은 걸 만듭니다.

다음으로 무작위로 문자를 뽑아와 배열해서 비밀번호를 완성합니다.