시크릿 키 생성기

openssl rand 없이, 브라우저에서 바로 만드는 랜덤 키·시크릿

값은 이 브라우저 안에서만 만들어집니다.
브라우저의 crypto.getRandomValues() 로 생성하며, 서버로 전송하지 않고 저장·기록하지도 않습니다. 주소창(URL)이나 브라우저 저장소에도 남기지 않으므로, 이 페이지를 닫으면 값은 사라집니다. 복사해 둔 값의 보관은 사용자 책임입니다.

키 길이 (바이트)
8~512바이트까지 지정할 수 있습니다. 기본값 48바이트는 openssl rand -base64 48 과 같은 길이입니다.
Base64
표준 Base64. 대소문자·숫자와 + / 를 씁니다. 환경변수나 설정 파일에 그대로 넣는 가장 흔한 형태입니다.
Hex
16진수. 0-9 와 a-f 만 쓰므로 어디에 넣어도 이스케이프가 필요 없지만, 같은 바이트 수라면 가장 깁니다.
Base64URL
+ / 를 - _ 로 바꾸고 패딩(=)을 뗀 형태. URL·쿠키 값·JWT 에 인코딩 없이 그대로 넣을 수 있습니다.
바이트와 글자 수는 다릅니다

키의 세기를 정하는 것은 글자 수가 아니라 바이트 수입니다. 48바이트는 384비트의 난수이고, 이것을 Base64로 적으면 64글자가 됩니다. 64글자짜리 문자열을 보고 "64바이트 키"라고 부르면 실제보다 강해 보이게 되므로, 이 도구는 두 숫자를 항상 함께 보여 줍니다.

같은 48바이트를 형식별로 적으면

형식 48바이트일 때 글자 수 쓰이는 문자
Base64 64자 A-Z a-z 0-9 + /
Hex 96자 0-9 a-f
Base64URL 64자 A-Z a-z 0-9 - _

Base64는 3바이트를 4글자로 적습니다. 그래서 바이트 수가 3의 배수일 때만 패딩(=) 없이 딱 떨어집니다. 48은 3의 배수라 64글자가 정확히 나오고, 32바이트처럼 3의 배수가 아니면 끝에 = 가 붙습니다.

어디에 몇 바이트를 쓰면 되나요
용도 권장 길이 권장 형식
세션 시크릿 · 쿠키 서명 키 32바이트 Base64
JWT 서명 키 (HS256) 32바이트 Base64URL
API 키 · 웹훅 검증 토큰 32바이트 Base64URL
AES-256 키 32바이트 Hex
여유 있게 잡고 싶을 때 (기본값) 48바이트 Base64

32바이트(256비트)를 넘기면 무차별 대입으로 맞히는 것은 현실적으로 불가능해집니다. 그보다 길게 잡는 것은 대체로 여유일 뿐 실질적인 강도 차이는 없으니, 길이를 늘리는 대신 키를 어디에 어떻게 보관할지에 시간을 쓰는 편이 낫습니다.

왜 서버가 아니라 브라우저에서 만드나요

서버가 키를 만들어 내려보내면, 그 값이 서버의 액세스 로그나 중간 프록시, 오류 추적 도구에 남을 수 있습니다. 한 번이라도 남으면 그 키는 더 이상 비밀이 아닙니다. 이 도구는 브라우저에서 만들어 네트워크에 아예 흘리지 않는 쪽을 택했습니다.

난수는 crypto.getRandomValues() 로 얻습니다. 운영체제가 제공하는 암호학적으로 안전한 난수원이라, 다음 값을 예측할 수 없습니다. Math.random() 은 예측이 가능해 키 생성에 쓰면 안 되며, 이 도구는 사용하지 않습니다.

직접 확인하고 싶다면 개발자 도구의 네트워크 탭을 열어 둔 채 새로 만들기를 눌러 보세요. 아무 요청도 발생하지 않습니다. 이 페이지를 내려받아 인터넷 연결 없이 열어도 똑같이 동작합니다.