🛠️ToolsShed

비밀번호 생성기

커스터마이징 가능한 옵션으로 강력한 비밀번호 생성.

6128

비밀번호 생성기는 브라우저에 내장된 난수 생성기(Web Crypto API)를 사용하여 암호학적으로 안전한 무작위 비밀번호를 생성합니다. 이는 비밀번호가 완전히 기기에서 생성되어 네트워크를 통해 전송되거나 어디에도 저장되지 않음을 의미합니다.

길이(8~128자)와 문자 집합을 계정을 생성하는 서비스의 요구 사항에 맞게 구성하세요. 대부분의 보안 전문가는 대문자, 소문자, 숫자, 기호를 혼합하여 최소 16자 이상의 비밀번호를 권장합니다.

비밀번호 관리자는 비밀번호 생성기의 최고의 동반자입니다. Bitwarden, 1Password, KeePass 같은 도구를 사용하면 모든 사이트에 대해 고유하고 무작위한 비밀번호를 기억할 필요 없이 생성하고 저장할 수 있습니다. 여러 서비스에서 비밀번호를 절대 재사용하지 마세요.

자주 묻는 질문

코드 구현

import secrets
import string

def generate_password(
    length: int = 16,
    use_upper: bool = True,
    use_lower: bool = True,
    use_digits: bool = True,
    use_symbols: bool = True,
) -> str:
    """Generate a cryptographically secure random password."""
    charset = ""
    required = []

    if use_lower:
        charset += string.ascii_lowercase
        required.append(secrets.choice(string.ascii_lowercase))
    if use_upper:
        charset += string.ascii_uppercase
        required.append(secrets.choice(string.ascii_uppercase))
    if use_digits:
        charset += string.digits
        required.append(secrets.choice(string.digits))
    if use_symbols:
        symbols = "!@#$%^&*()-_=+[]{}|;:,.<>?"
        charset += symbols
        required.append(secrets.choice(symbols))

    if not charset:
        raise ValueError("At least one character type must be selected")

    # Fill the rest of the password
    remaining = [secrets.choice(charset) for _ in range(length - len(required))]
    password_list = required + remaining

    # Shuffle to avoid predictable positions
    secrets.SystemRandom().shuffle(password_list)
    return "".join(password_list)

# Examples
print(generate_password(16))
print(generate_password(24, use_symbols=False))
print(generate_password(8, use_upper=False, use_symbols=False))

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.