⚠️ 중요: 이 도구는 서버로 단 한 바이트도 전송되지 않습니다. 모든 생성·계산이 당신의 브라우저 안에서完전히 이루어지며, 비밀번호가 외부로 절대 유출되지 않습니다.
🔐 왜 이 도구를 만들었나?
비밀번호 생성기는 수없이 많지만, 대부분 두 가지 문제 중 하나를 안고 있습니다.
- 서버에서 생성한다 — 비밀번호가 서버로 전송된다 (심지어 HTTPS 라도, 서버 로그에 남을 수 있다)
- 규칙이 너무 제한적이다 — “대문자 1 개 이상, 숫자 2 개 이상” 같은 기본 규칙만 지원한다
저는 이 두 문제를 한 번에 해결하고 싶었습니다. 서버로 절대 전송하지 않으면서도, 어떤 규칙이든 만족시킬 수 있는 생성기가 필요했습니다.
그래서 만든 것이 이 Password Generator입니다.
🛡️ “절대 안전”이 무슨 뜻인가?
이 도구는 완전히 클라이언트 사이드에서 동작합니다. 기술적으로 말하면:
| 항목 | 구현 방식 | 의미 |
|---|---|---|
| 비밀번호 생성 | JavaScript (브라우저 내) | 서버로 전송되지 않음 |
| 엔트로피 계산 | JavaScript (브라우저 내) | 서버로 전송되지 않음 |
| 강도 평가 | JavaScript (브라우저 내) | 서버로传输되지 않음 |
| 클립보드 복사 | 브라우저 API | 서버로 전송되지 않음 |
즉, 당신이 화면에 보이는 비밀번호는 당신의 컴퓨터 밖으로 단 한 번도 나가지 않습니다.
이것은 단순한 광고 문구가 아닙니다. 코드 수준에서 확인해 볼 수 있습니다:
// password-generator.astro 의 핵심 생성 로직
function generatePassword() {
const charset = buildCharset(); // 문자셋 빌드 (로컬)
let password = []; // 배열 초기화
// 최소 포함 문자 배치 (로컬)
for (let i = 0; i < minUpper; i++) {
password.push(randomChar(typeCharset));
}
// 나머지 랜덤 채우기 (로컬)
while (password.length < length) {
password.push(randomChar(charset));
}
shuffle(password); // 셔플 (로컬)
return password.join(""); // 문자열로 변환 (로컬)
}
이 코드에서 fetch(), XMLHttpRequest, WebSocket 같은 네트워크 호출이 전혀 없습니다. 서버로 데이터를 보내는 코드가 아예 존재하지 않는 것입니다.
💡 참고: 이 도구는 Astro 로 빌드된 정적 사이트입니다. 서버는 HTML 파일만 전달할 뿐, 비밀번호 생성 로직은 브라우저에서 실행됩니다.
📖 사용법 가이드
1️⃣ 가장 빠른 시작 (30 초)
- 페이지에 접속합니다
- 문자셋 체크박스에서 원하는 문자 종류를 선택합니다 (기본: 모두 체크)
- 길이 슬라이더로 비밀번호 길이를 조절합니다 (1~256 자, 기본 16)
- 비밀번호가 자동으로 생성됩니다!
복사 버튼을 누르면 클립보드에 복사됩니다.
2️⃣ 문자셋 설정
| 체크박스 | 포함 문자 | 기본값 |
|---|---|---|
| ☑ 대문자 | A-Z (26 자) | 체크됨 |
| ☑ 소문자 | a-z (26 자) | 체크됨 |
| ☑ 숫자 | 0-9 (10 자) | 체크됨 |
| ☑ 특수문자 | !@#$%^&*()_+-=[]{}|;:,.<>? (32 자) | 체크됨 |
💡 팁: 모든 문자셋을 선택하면 94 자의 풀에서 생성되어 가장 강력한 비밀번호가 됩니다.
3️⃣ 길이 설정
- 슬라이더 드래그 또는
- 숫자 입력창에 직접 입력 (1~256)
- 슬라이더와 입력창은 동기화되어 있습니다.
4️⃣ 최소 포함 규칙 (선택사항)
각 문자셋별로 최소 몇 글자 이상 포함시킬지 설정할 수 있습니다.
| 필드 | 설명 | 예시 |
|---|---|---|
| 대문자 최소 | 반드시 포함될 대문자 개수 | 2 → 최소 2 개의 대문자 |
| 소문자 최소 | 반드시 포함될 소문자 개수 | 3 → 최소 3 개의 소문자 |
| 숫자 최소 | 반드시 포함될 숫자 개수 | 2 → 최소 2 개의 숫자 |
| 특수문자 최소 | 반드시 포함될 특수문자 개수 | 1 → 최소 1 개의 특수문자 |
⚠️ 주의: 최소 포함 개수의 합계가 비밀번호 길이보다 크면 에러가 발생합니다.
5️⃣ 제외 문자 (선택사항)
모호한 문자 자동 제외
- ☑ 체크 시
0Oo,1lI,{},[],(),<>등이 자동 제거됩니다. - 예: 비밀번호에서
0(영) 과O(대문자 오) 를 구분하기 어려울 때 유용합니다.
직접 입력으로 제외
- 텍스트 박스에 제외할 문자를 직접 입력합니다.
- 예:
abc입력 → 비밀번호에서a,b,c가 완전히 제거됩니다. - 특수문자 (
-,[,]등) 도 안전하게 처리됩니다.
6️⃣ 사용자 정의 문자셋 (고급)
- ☑ 사용자 정의 문자셋 사용 체크박스 활성화
- 텍스트 영역에 원하는 문자를 직접 입력합니다.
| 예시 | 설명 |
|---|---|
한글자음ㄱㄴㄷㄹㅁ | 한글 자음만 사용 |
🔥⭐💎🚀✨ | 이모지만 사용 |
01 | 바이너리 (0 과 1 만) |
ABCDEF | HEX 대문자만 |
💡 팁: 사용자 정의 문자셋을 활성화하면 기본 문자셋 (대/소문자, 숫자, 특수문자) 은 사용되지 않습니다.
7️⃣ 패턴/정규식 모드 (고급)
- ☑ 패턴 모드 활성화 체크박스 활성화
- 패턴 입력창에 정규식 스타일의 패턴을 입력합니다.
| 패턴 | 설명 | 예시 결과 |
|---|---|---|
[A-Z] | 대문자 1 개 | K |
[a-z] | 소문자 1 개 | x |
\d | 숫자 1 개 | 7 |
[abc] | 특정 문자 중 하나 | a, b, 또는 c |
{n} | 반복 횟수 | [A-Z]{2} → AB |
복합 패턴 예시:
[A-Z]{2}\d{3}[a-z]{4}→K7M9p...(대문자 2 + 숫자 3 + 소문자 4)\d{4}-[A-Z]{2}\d{3}→7891-KL234(숫자 4 - 대문자 2 숫자 3)
💡 팁: 패턴으로 생성된 길이가 설정 길이보다 짧으면 나머지 자리는 랜덤 문자로 채워집니다.
8️⃣ 여러 개 동시 생성 (1~20 개)
- 동시 생성 개수 슬라이더 또는 숫자 입력으로 1~20 개 설정
- 첫 번째 비밀번호는 메인 표시 영역에, 나머지는 생성 결과 목록에 표시됩니다.
- 각 항목별 복사 버튼으로 개별 복사 가능합니다.
9️⃣ 내보내기 (CSV/TXT)
여러 개 생성 시 아래 버튼으로 파일 다운로드:
| 형식 | 설명 |
|---|---|
| 텍스트 | 각 비밀번호를 줄바꿈으로 구분한 .txt 파일 |
| CSV | 번호, 비밀번호, 길이, 엔트로피, 강도 점수 포함 .csv 파일 (Excel 호환) |
🔟 강도 점수 이해
? 버튼 클릭 시 상세 계산 방식 확인:
| 요소 | 가중치 | 설명 |
|---|---|---|
| 엔트로피 | 50% | bits = 길이 × log₂(문자셋 크기) |
| 길이 | 25% | 길수록 점수 ↑ (최대 25 점) |
| 다양성 | 25% | 문자셋 종류가 많을수록 ↑ (최대 25 점) |
등급 기준:
| 점수 | 색상 | 등급 | 설명 |
|---|---|---|---|
| 0-20 | 🔴 빨강 | 매우 약함 | 즉시 추측 가능 |
| 21-40 | 🟠 주황 | 약함 | 쉽게 추측 가능 |
| 41-60 | 🟡 노랑 | 보통 | 어느 정도 안전 |
| 61-80 | 🟢 라임 | 강함 | 안전함 |
| 81-100 | 💚 초록 | 매우 강함 | 매우 안전함 |
🎯 추천 설정 시나리오
1. 일반적인 웹사이트 비밀번호 (권장)
문자셋: 모두 체크 ☑☑☑☑
길이: 16 자
최소 포함: 대문자 2, 소문자 3, 숫자 2, 특수문자 1
제외: 모호한 문자 제외 ☑
2. 금융/중요 계정 (최고 보안)
문자셋: 모두 체크 ☑☑☑☑
길이: 24 자 이상
최소 포함: 대문자 3, 소문자 5, 숫자 4, 특수문자 3
제외: 모호한 문자 제외 ☑
3. 코드/API 키 (특수 목적)
문자셋: 사용자 정의 체크 ☑
입력: ABCDEF0123456789 (HEX 만)
길이: 32 자
4. 패턴 기반 (특정 구조 필요 시)
패턴 모드: ☑ 활성화
패턴: [A-Z]{2}\d{4}-[a-z]{3}
길이: 10 자
🚀 사용해보기
💡 팁: 이 도구는 오프라인에서도 사용할 수 있습니다. 한 번 페이지에 접속하면, 브라우저 캐시에 저장되어 인터넷 연결 없이도 사용할 수 있습니다 (PWA 설정 시).
마무리
비밀번호 생성기는 매일 쓰는 도구입니다. 그런데 대부분의 생성기는 서버에서 비밀번호를 생성하고, 그 결과가 서버 로그에 남을 수 있습니다.
이 도구는 그런 걱정을 완전히 없앴습니다. 비밀번호가 서버로 절대 전송되지 않으며, 모든 생성·계산이 당신의 브라우저 안에서完전히 이루어집니다.
특히:
- 한글, 이모지 같은 특수 문자도 사용자 정의 가능
- 패턴 모드로
[A-Z]{2}\d{3}같은 복잡한 규칙도 지원 - 여러 개 동시 생성으로 한 번에 20 개까지 생성 가능
- CSV/TXT 내보내기로 Excel 에서도 활용 가능
만약 “정말 서버로 안 보내나?”라고 의심된다면, 브라우저 개발자 도구 (F12) → Network 탭을 열어보세요. 비밀번호 생성 중에는 단 하나의 요청도 발생하지 않습니다.
당신의 비밀번호는 당신의 것. 이 도구는 그 사실을 코드 수준에서 보장합니다. 👍