비밀번호 생성기
안전한 랜덤 비밀번호를 생성합니다.
이 계산기가 하는 일
길이(8~32자)와 문자 조합(소문자·대문자·숫자·특수문자)을 고르면 브라우저의 암호학적 난수 생성기(crypto.getRandomValues)가 무작위 비밀번호를 뽑아 준다. 생성된 결과 옆에는 강도 등급과 복사 버튼이 같이 뜨니, 새 계정을 만들거나 기존 비밀번호를 갈아끼울 때 안전한 후보를 몇 초 만에 손에 넣을 수 있다. 생성과 강도 판정은 전부 브라우저 안에서만 돌아가고, 입력값이 서버로 넘어가지 않는다.
여기서 보여 주는 강도 등급은 길이와 선택한 문자 종류 수만 따지는 간이 추정치다. NIST SP 800-63B가 강조하는 길이(최소 12자 이상)와 종류 다양성 원칙을 단순화해서 옮긴 정도라고 보면 된다. 예컨대 같은 12자라도 대소문자에 숫자와 특수문자까지 다 섞으면 가능한 경우의 수가 88^12 ≈ 2.2×10²³까지 불어난다. 실제 안전도는 사전 단어가 들어갔는지, 반복 패턴이 있는지, 다른 곳에서 재사용한 적이 있는지처럼 화면에 안 잡히는 요소에 좌우되니 등급은 참고용으로만 보자.
입력값은 이렇게 씁니다
- 길이슬라이더로 8~32자 사이에서 조정합니다. 중요한 계정이라면 16자 이상으로 두는 편이 좋습니다.
- 문자 조합소문자(a-z), 대문자(A-Z), 숫자(0-9), 특수문자(!@# 등) 네 가지 토글입니다. 하나도 켜지 않으면 소문자만으로 만들어집니다.
계산 공식
· 가능한 조합 수 = (켠 문자 종류의 글자 수 합) ^ 길이
· 문자 풀 크기: 소문자 26 · 대문자 26 · 숫자 10 · 특수문자 26 → 네 종류를 다 켜면 88
· 예: 88^16 ≈ 1.3×10³¹ (4종 16자) / 88^12 ≈ 2.2×10²³ (4종 12자)
· 대입공격 체감: 초당 1조(10¹²)회를 시도하는 장비를 가정하면, 소문자 8자(26^8 ≈ 2,090억 가지)는 1초 안에 뚫리고, 4종 12자(2.2×10²³)는 약 7천 년, 4종 16자(1.3×10³¹)는 우주 나이를 한참 넘는 시간이 걸립니다. 길이 4자 차이(12→16자)가 조합 수를 88^4 ≈ 6천만 배로 키웁니다.
· 이 도구의 강도 등급: 약함(8자 미만 또는 2종 미만) → 보통(12자 미만 또는 3종 미만) → 강함(16자 미만 또는 4종 미만) → 매우 강함(16자 이상에 4종 모두)
조합 수와 해독 시간은 가정한 공격 속도에 기댄 추정치라서, 실제 안전도는 패턴이나 재사용 여부에 따라 달라질 수 있습니다.
숫자로 보는 예시
4종 모두 + 16자 → 매우 강함
네 종류를 다 켜고 길이를 16자로 잡으면 문자 풀은 88개가 됩니다. 16자 이상에 4종을 모두 쓴 셈이라 등급은 매우 강함으로 나옵니다. 가능한 조합은 88^16 ≈ 1.3×10³¹, 중요한 계정에 권할 만한 수준입니다.
4종 모두 + 12자 → 강함
같은 4종을 써도 길이를 12자로 줄이면 16자 미만이라 등급이 한 단계 내려간 강함이 됩니다. 조합 수는 88^12 ≈ 2.2×10²³이라 평소 쓰는 계정에는 무리가 없지만, 은행이나 이메일 마스터 같은 핵심 계정이라면 16자 이상으로 늘려 두길 권합니다.
소문자만 + 10자 → 약함
특수문자·숫자·대문자를 끄고 소문자(26자)만 켠 채 10자로 만들면 문자 종류가 1종뿐입니다. 2종 미만이면 길이가 얼마든 등급은 약함에 머뭅니다. 최소한 대문자와 숫자라도 같이 켜서 3종 이상으로 맞추는 걸 권합니다.
이 숫자, 어떻게 볼까
생성 버튼을 누르면 가장 위 칸에 등폭 글꼴로 비밀번호가 뜬다. 이건 손으로 옮겨 적기보다 바로 아래 클립보드에 복사 버튼을 눌러 그대로 붙여넣는 용도다. 버튼이 "복사됨!"으로 바뀌면 클립보드에 담긴 것이고, 마음에 안 들면 생성 버튼을 다시 눌러 새로 뽑으면 된다. 같은 설정이라도 누를 때마다 다른 값이 나온다.
아래 비밀번호 강도 막대와 글자가 지금 설정의 등급이다. 색이 빨강이면 약함, 주황은 보통, 초록은 강함, 짙은 막대가 꽉 차면 매우 강함이고 막대 길이도 25%·50%·75%·100%로 같이 움직인다. 일상 계정은 강함이면 무난하고, 은행·이메일 마스터처럼 뚫리면 곤란한 곳은 매우 강함(16자 이상에 4종 모두)까지 올려 두자. 등급이 강함에서 멈춘다면 길이를 16자 위로 올리거나 꺼 둔 문자 종류를 켜 보면 된다. 다만 이 막대는 길이와 종류 수만 보는 간이 추정이라, 매우 강함이라고 떠도 재사용했거나 사전 단어가 섞였다면 안심할 단계는 아니다.
자주 나오는 실수
- 문자 종류를 한두 개만 켜고 길이만 잔뜩 늘리는 경우. 종류가 2종 미만이면 등급은 약함에서 끝까지 안 올라간다.
- 생성된 비밀번호를 복사하지 않고 화면만 보고 손으로 옮겨 적다가 대소문자나 기호를 잘못 치는 실수.
- 슬라이더를 8자 근처에 둔 채 강함이 나오길 기대하는 경우. 12자 미만은 보통, 16자 미만은 강함이 한계다.
- 사이트가 안 받는 특수문자가 섞인 비밀번호를 그대로 붙여넣어 가입이나 변경이 거부되는 경우.
이럴 땐 어긋날 수 있어요
- 등급은 길이와 종류 수만 보기 때문에, password1234처럼 사전 단어나 연속 숫자가 들어가도 길이와 종류가 같으면 같은 등급으로 나온다.
- 이미 다른 사이트에서 유출됐거나 재사용한 비밀번호라면 등급이 매우 강함으로 떠도 실제로는 안전하다고 보기 어렵다.
- 공격자가 가정한 초당 시도 횟수(GPU 성능)에 따라 해독에 걸린다는 시간 추정이 크게 출렁인다.
- 특정 사이트가 쓸 수 있는 문자를 제한하면 실제 입력 가능한 풀 크기가 줄어, 이론상 조합 수와 차이가 난다.
주의할 점
- 이 생성기는 브라우저 안에서만 돌아가고, 입력값과 만들어진 비밀번호는 서버로 전송되지 않는다.
- 같은 비밀번호를 여러 사이트에 돌려쓰지 말자. 한 곳이 뚫리면 나머지 계정까지 같이 위험해진다.
- 만든 비밀번호는 1Password, Bitwarden, Apple Keychain 같은 비밀번호 관리자에 넣어 두는 게 안전하다.
- 특수문자를 안 받는 사이트도 있어서, 네 가지 옵션을 늘 다 켤 수 있는 건 아니다.
- 화면에 비밀번호가 떠 있는 동안 어깨너머로 보이거나 화면 녹화에 잡히지 않도록 조심하자.
- 강도 등급은 어디까지나 간이 추정치이니, 중요한 계정에는 2단계 인증(2FA)을 같이 걸어 두자.
많이 묻는 것들
몇 자 이상이 안전한가요?⌄
NIST 가이드라인 기준으로 최소 8자, 권장은 12자 이상이다. 은행이나 이메일 마스터처럼 보안이 중요한 곳이라면 16자 이상으로 잡자. 길이가 같아도 문자 종류를 다 섞으면 훨씬 단단해진다.
강도 등급은 어떻게 매겨지나요?⌄
길이와 켠 문자 종류 수만 보고 등급을 정한다. 8자 미만이거나 2종 미만이면 약함, 12자 미만이거나 3종 미만이면 보통, 16자 미만이거나 4종 미만이면 강함, 16자 이상에 4종을 다 쓰면 매우 강함이다. 사전 단어나 패턴은 들어가지 않는 간이 추정치라 참고용으로만 보면 된다.
Math.random()을 안 쓰고 crypto API를 쓰는 이유는?⌄
Math.random()도 난수긴 하지만 시드가 예측될 수 있어 보안 용도로는 맞지 않는다. crypto.getRandomValues()는 OS의 엔트로피 풀을 끌어다 써서 암호학적으로 안전한 난수를 내준다.
비밀번호 관리자가 꼭 필요한가요?⌄
강력한 비밀번호일수록 외우기 어렵다 보니 1Password나 Bitwarden 같은 관리자에 넣어 두는 편이 마음이 놓인다. 마스터 비밀번호 하나만 기억하면 사이트마다 서로 다른 강한 비밀번호를 굴릴 수 있다.
특수문자를 못 받는 사이트는 어떻게 하나요?⌄
특수문자 토글을 끄고 그만큼 길이를 더 늘리면 된다. 대소문자에 숫자만 쓰는 62자 풀이라도 18~20자 이상이면 조합 수가 충분히 커진다. 모자란 부분을 길이로 메우는 게 흔한 대안이다.
2단계 인증과 강력한 비밀번호 중 어느 게 더 중요한가요?⌄
둘 다 챙겨야 한다. 강한 비밀번호에 2FA(SMS·OTP·하드웨어 키)를 얹은 조합이 현실적으로 가장 든든하니, 중요한 계정이라면 되도록 2FA를 켜 두자.
요율 마지막 업데이트 · 2026-06-03
콘텐츠 마지막 검토 · 2026-06-04
참고 자료 · NIST SP 800-63B 디지털 신원 가이드라인
결과는 공개 기준으로 계산한 참고용 추정치이며 법적·세무적 효력이 없습니다. 면책 조항 · 오류 제보 yuseong2099@gmail.com