비밀번호 생성기/ 보안 랜덤
강력한 랜덤 비밀번호를 즉시 생성합니다. 길이, 문자 유형, 대량 생성을 커스터마이즈할 수 있습니다. Web Crypto API 사용 — 비밀번호는 브라우저 밖으로 전송되지 않습니다.
비밀번호는 브라우저에서 로컬로 생성되며 서버로 전송되지 않습니다
a*-0Q,)#af#$9+mJ8+PowH0A!60hCO1x!zCs0$~ogbh#(&&5F%Gim)jWhh;+m~/4dC*#=/X}n7]J6EX5이 도구가 도움이 되었나요?
강력한 비밀번호의 조건
강력한 비밀번호는通常 다음 조건을满足합니다: 최소 12자 이상(16자 이상 권장), 대소문자, 숫자, 특수문자 포함, 사전 단어나 개인 정보 사용 금지, 사이트마다不同的 비밀번호 사용. 비밀번호 강度은 길이와密切相关하여 16자리随机 비밀번호는 8자리复杂 비밀번호보다暴力破解이 더 어렵습니다. NIST 최신 가이드라인은复杂度보다 길이를优先할 것을 권장합니다.
직접 비밀번호를 만들면 안 되는 이유
사람들은 비밀번호 생성 시 예측 가능한 패턴을使用하는倾向이 있습니다: 이름+생일+기호, 키보드 배열(qwerty, 123456), 일반적인 단어 변형 등. 이러한 패턴은 이미 공격자의 비밀번호 사전에收录되어 있어数秒 만에破解될 수 있습니다.随机 생성된 비밀번호는 패턴이 없어暴力破解에数百年이 걸립니다. 비밀번호 생성기와 비밀번호 관리자(1Password, Bitwarden 등)를配合使用하는 것이 모범 사례입니다.
이 비밀번호 생성기는 안전한가
이 도구는 브라우저内장된 Web Crypto API(crypto.getRandomValues)를使用하여 비밀번호를生成하며, 이는暗号학적으로安全한擬似随机生成器(CSPRNG)입니다.所有 生成过程이 全部 브라우저에서完成되어 비밀번호가 서버에 업로드되지 않습니다. 네트워크传输이 없으므로 유출 위험도 없습니다. 오프라인에서도安心하고 사용할 수 있습니다.
코드 예제
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@"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 CSPRNGfunction 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("");
}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
}