시크릿 키 만들기
API 키·세션 비밀·비밀번호로 쓸 무작위 문자열을 만듭니다. 길이와 넣을 글자를 골라 조합하고, 얼마나 튼튼한지 비트로 함께 보여 줍니다.
길이
32자
글자 종류
특수문자: !#%*+-.:=?@^_~
개수
만든 열쇠
약 0비트 · 짧습니다. 사람이 외워야 하는 것이 아니라면 늘리세요
브라우저 안에서 만들고 어디로도 보내지 않습니다. 무작위성은 crypto.getRandomValues 에서 옵니다 — Math.random 은 예측할 수 있어 열쇠에 쓰면 안 됩니다. 고른 글자 종류마다 최소 한 글자를 넣은 뒤 전체를 섞어 자리에 치우침이 없게 합니다.
길이와 글자 묶음
길이는 16·32·64 단추나 슬라이더로 8부터 128까지 정합니다. 묶음은 digits(10자)·lower(26자)·upper(26자)·symbols(14자) 넷이고, 켜 둔 묶음마다 한 글자는 반드시 들어갑니다 — 그냥 뽑으면 특수문자를 켰는데 하나도 없는 값이 나와, 그것을 요구하는 시스템에서 되돌아오기 때문입니다. 개수는 1·5·10 이고 여럿이면 「모두 복사」가 줄바꿈으로 잇습니다.
비트 수는 어떻게 세나
길이 × log2(고를 수 있는 글자 수) 를 내림한 값입니다. 네 묶음이면 76자라 한 자에 약 6.25비트입니다. 64비트 아래가 「짧다」, 128비트 아래가 「보통」, 그 위가 「넉넉」입니다 — 네 묶음 16자는 99비트, 32자는 199비트입니다. 묶음마다 한 글자를 보장하는 규칙은 이 계산에 넣지 않았습니다.
헷갈리는 글자 빼기
켜면 0·O·1·l·I 다섯을 모든 묶음에서 뺍니다. 손으로 옮겨 적을 열쇠에 씁니다. 글자가 76자에서 71자로 줄어 같은 길이에서 비트가 조금 내려갑니다.
브라우저에서 만들고 어디에도 보내지 않습니다
난수는 crypto.getRandomValues 에서 옵니다. 만든 값은 서버로 가지 않고 저장하지도 않으므로 새로 고치면 다른 값이 나오고 지난 값은 되찾을 수 없습니다. 같은 설정으로 다시 뽑으려면 「다시 만들기」를 누릅니다.
자주 묻는 질문
특수문자가 왜 몇 개뿐인가요?
붙여넣는 자리에서 사고가 나지 않는 것만 남겼습니다. 셸에서 $ 는 변수로 풀리고 백틱은 명령으로 실행됩니다. 따옴표·역슬래시는 문자열을 끊고, / 는 주소에서 경로 구분자입니다. .env 파일에서도 같은 문제가 생깁니다. 고를 수 있는 글자가 조금 줄지만 길이를 한두 자 늘리면 그 손해는 금방 메워집니다.
난수가 안전한가요?
crypto.getRandomValues 를 씁니다. Math.random 은 예측할 수 있어 열쇠를 만드는 데 써서는 안 됩니다 — 같은 브라우저에서 몇 개만 보면 다음 값을 맞출 수 있습니다. 글자를 뽑을 때 나머지 연산으로 생기는 치우침(모듈로 편향)도 없앴습니다.
몇 비트면 충분한가요?
128비트를 넘으면 넉넉합니다. 64비트 아래는 짧습니다. 영문 대소문자·숫자·특수문자를 다 켜면 한 글자가 약 6비트이므로 32자면 199비트입니다. 화면에 함께 적어 두니 보면서 정하세요.
숫자만 켜면 왜 「짧다」고 나오나요?
숫자는 열 개뿐이라 한 자가 약 3.32비트입니다. 16자면 53비트라 64 에 못 미칩니다. 숫자만으로 「보통」이 되려면 20자, 「넉넉」이 되려면 39자가 필요합니다.
특수문자를 켰는데 하나뿐입니다. 이상한가요?
아닙니다. 묶음마다 한 글자는 보장하지만 그 이상은 무작위입니다. 특수문자는 76자 중 14자라 32자에서 여섯 개쯤이 평균이고 하나만 나오는 일도 있습니다.
붙여넣은 코드가 서버로 가나요?
가지 않습니다. 브라우저 안에서만 처리하고 어디에도 보내거나 저장하지 않습니다. 사내 설정 파일이나 운영 쿼리처럼 밖으로 내보내기 곤란한 것도 그래서 쓸 수 있습니다. 인터넷을 끊고도 동작합니다.