비밀번호 생성기/ 보안 랜덤

강력한 랜덤 비밀번호를 즉시 생성합니다. 길이, 문자 유형, 대량 생성을 커스터마이즈할 수 있습니다. Web Crypto API 사용 — 비밀번호는 브라우저 밖으로 전송되지 않습니다.

설정
비밀번호 길이
43264128
생성 수
여러 비밀번호를 한 번에 생성
5
0 O o I l 1 등 제외
강도매우 강함
엔트로피: 104 bits91 chars

비밀번호는 브라우저에서 로컬로 생성되며 서버로 전송되지 않습니다

생성된 비밀번호
a*-0Q,)#af#$9+mJ
8+PowH0A!60hCO1x
!zCs0$~ogbh#(&&5
F%Gim)jWhh;+m~/4
dC*#=/X}n7]J6EX5

이 도구가 도움이 되었나요?

강력한 비밀번호의 조건

강력한 비밀번호는通常 다음 조건을满足합니다: 최소 12자 이상(16자 이상 권장), 대소문자, 숫자, 특수문자 포함, 사전 단어나 개인 정보 사용 금지, 사이트마다不同的 비밀번호 사용. 비밀번호 강度은 길이와密切相关하여 16자리随机 비밀번호는 8자리复杂 비밀번호보다暴力破解이 더 어렵습니다. NIST 최신 가이드라인은复杂度보다 길이를优先할 것을 권장합니다.

직접 비밀번호를 만들면 안 되는 이유

사람들은 비밀번호 생성 시 예측 가능한 패턴을使用하는倾向이 있습니다: 이름+생일+기호, 키보드 배열(qwerty, 123456), 일반적인 단어 변형 등. 이러한 패턴은 이미 공격자의 비밀번호 사전에收录되어 있어数秒 만에破解될 수 있습니다.随机 생성된 비밀번호는 패턴이 없어暴力破解에数百年이 걸립니다. 비밀번호 생성기와 비밀번호 관리자(1Password, Bitwarden 등)를配合使用하는 것이 모범 사례입니다.

이 비밀번호 생성기는 안전한가

이 도구는 브라우저内장된 Web Crypto API(crypto.getRandomValues)를使用하여 비밀번호를生成하며, 이는暗号학적으로安全한擬似随机生成器(CSPRNG)입니다.所有 生成过程이 全部 브라우저에서完成되어 비밀번호가 서버에 업로드되지 않습니다. 네트워크传输이 없으므로 유출 위험도 없습니다. 오프라인에서도安心하고 사용할 수 있습니다.

코드 예제

JavaScript
function generatePassword(len, charset) {
  const arr = new Uint32Array(len);
  crypto.getRandomValues(arr);
  return Array.from(arr, (v) =>
    charset[v % charset.length]
  ).join("");
}

const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";
const pw = generatePassword(16, chars);
// e.g. "xK9#mP2&vL5$nQ7@"
Python
import secrets
import string

def generate_password(length=16):
    chars = (
        string.ascii_letters
        + string.digits
        + string.punctuation
    )
    return "".join(
        secrets.choice(chars)
        for _ in range(length)
    )

pw = generate_password(16)
# Uses OS-level CSPRNG
TypeScript
function securePassword(
  length: number,
  options = {
    upper: true, lower: true,
    digits: true, symbols: true,
  }
): string {
  let pool = "";
  if (options.upper) pool += "A-Z";
  if (options.lower) pool += "a-z";
  if (options.digits) pool += "0-9";
  if (options.symbols) pool += "!@#$%^&*";
  const buf = new Uint32Array(length);
  crypto.getRandomValues(buf);
  return [...buf].map(v =>
    pool[v % pool.length]).join("");
}
Go
import (
    "crypto/rand"
    "math/big"
)

func GeneratePassword(
    length int, charset string,
) (string, error) {
    result := make([]byte, length)
    max := big.NewInt(int64(len(charset)))
    for i := range result {
        n, err := rand.Int(rand.Reader, max)
        if err != nil {
            return "", err
        }
        result[i] = charset[n.Int64()]
    }
    return string(result), nil
}

자주 묻는 질문

생성된 비밀번호는 안전한가요?
네, 매우 안전합니다. 이 도구는 브라우저의 네이티브 Web Crypto API(crypto.getRandomValues)를 사용합니다. 이는 암호학적으로 안전한 난수 생성기로, 1Password와 Bitwarden 같은 전문 비밀번호 관리자와 동일한 기술입니다.
비밀번호가 서버로 전송되나요?
아닙니다. 모든 비밀번호는 브라우저에서 완전히 생성되고 표시됩니다. 네트워크 요청이 전혀 발생하지 않습니다. 소스 코드는 완전히 공개되어 있어 언제든지 확인할 수 있습니다. 오프라인에서도 작동합니다.
비밀번호 길이는 어느 정도가 적당한가요?
최소 12자, 이상적으로는 16자 이상을 권장합니다. 12자 혼합 비밀번호는 약 72비트의 엔트로피를 가지며 해독에 수백 년이 걸립니다. 16자(95비트 이상)에서는 알려진 모든 무차별 대입 공격에 견딜 수 있습니다. 중요한 계정에는 20자 이상을 사용하세요.
비밀번호 엔트로피란 무엇인가요?
비밀번호 엔트로피는 무작위성과 강도를 비트 단위로 측정합니다. 계산 공식은 log2(문자 풀 크기) x 비밀번호 길이입니다. 엔트로피가 높을수록 해독이 어렵습니다. 일반적으로 60비트 이상이 중간, 80비트 이상이 강력, 128비트 이상은 현재 기술로 사실상 해독 불가능합니다.
왜 혼동하기 쉬운 문자를 제외하나요?
일부 문자는 시각적으로 매우 유사합니다: 0과 O, 1과 l과 I 등. 비밀번호를 수동으로 입력하거나 구두로 전달해야 할 때 이 옵션을 활성화하면 혼란을 방지할 수 있습니다. 복사-붙여넣기만 하는 경우 더 큰 문자 풀을 위해 비활성화해 두어도 됩니다.
생성된 비밀번호는 어떻게 저장해야 하나요?
브라우저 자동 완성 대신 전용 비밀번호 관리자(1Password, Bitwarden, KeePass)를 사용하세요. 비밀번호를 일반 텍스트 파일, 메모지, 채팅 메시지에 저장하지 마세요. 각 계정마다 반드시 다른 비밀번호를 사용하세요.