도구
가이드

솔트 / 난수 토큰 생성기

암호

crypto.getRandomValues로 암호학적으로 안전한 난수 솔트와 토큰을 Hex 또는 Base64로 생성합니다.

100% 클라이언트 백엔드 없음
이 페이지에서

솔트란?#

솔트는 해싱 과정에 섞어 넣는 무작위 데이터 조각으로, 동일한 두 입력이 서로 다른 출력을 내게 만듭니다. 솔트의 역할은 비밀 유지가 아니라 유일성입니다. 솔트는 그것이 보호하는 해시 옆에 평문으로 놓일 수 있으며, 여전히 “같은 비밀번호를 가진 모든 사용자가 같은 다이제스트로 해싱되는” 공격을 무력화합니다. 각 비밀번호가 자기 솔트를 가지면, 공격자는 데이터베이스 전체에 걸쳐 미리 계산된 표 하나를 재사용할 수 없습니다. 항목마다 다시 계산해야 합니다.

이 페이지는 crypto.getRandomValues 로 암호학적으로 강력한 무작위 바이트를 만들어 세 가지 인코딩으로 건넵니다. Hex (바이트당 두 글자, 비밀번호 솔트와 무결성 토큰의 관례), Base64 (더 간결), 그리고 base64url (+// 를 -/_ 로 바꾸고 = 패딩을 떼어 낸 URL·파일 이름 안전 변형, JWT와 서명된 URL에 쓰임).

같은 원시적 기능은 범용 무작위 토큰 생성기로도 쓰입니다. API 키, 난스 값, 불투명 id, 일회용 토큰은 모두 “텍스트로 인코딩된 무작위 바이트”이며, 이 도구가 만드는 것이 정확히 그것입니다.

사용 방법#

  1. 바이트 수 를 설정하세요. 기본값 16(128비트)이 표준 솔트 크기입니다. 더 긴 토큰이 필요할 때 필드는 최대 8192까지 받습니다.
  2. 출력 형식 을 고르세요. Hex, Base64, Base64url 중 하나.
  3. 생성 을 누르고, 복사 하세요. 상태 줄은 결과가 몇 비트의 엔트로피를 나타내는지(바이트 × 8) 보여주어, 요청한 것을 받았는지 한눈에 확인할 수 있게 합니다.

주요 기능#

  • 편향 없는 무작위 바이트. 브라우저의 암호학적으로 강력한 생성기인 crypto.getRandomValues 에서 가져옵니다.
  • 세 가지 인코딩. 솔트와 체크섬에는 Hex, 간결한 토큰에는 Base64, URL·파일 이름·JSON에 실리는 모든 것에는 base64url.
  • 정직한 엔트로피 보고. 상태 줄은 오독하기 쉬운 인코딩된 문자열 길이가 아니라 실제 비트 수를 밝힙니다.
  • 최대 8192바이트. 같은 도구가 16바이트 솔트와 256바이트 키 덩어리를 모두 처리합니다.
  • 업로드 없음. 생성은 로컬이며, 무작위 바이트는 결코 전송되지 않습니다.

실전 예시#

세 가지 형식 각각으로 16바이트 를 생성하세요. 16바이트 추출은 128비트의 엔트로피이며, 인코딩된 길이는 무작위 값과 무관하게 고정되어 있습니다.

  • Hex — 32글자, 예 7a4c9f1e0b8d2635c4a1e9f07b2d4861
  • Base64 — == 패딩을 곁들인 24글자, 예 8MDwarqMD7B594C5hCB1zQ==
  • base64url — 패딩을 떼어 낸 22글자, 예 8MDwarqMD7B594C5hCB1zQ

(위 값들은 모양을 보여 주기 위한 것이며, 바이트가 매번 새로 무작위화되므로 실제 출력은 매번 다릅니다.) 256비트 솔트나 키를 위해 32바이트 로 올리면 길이는 결정론적으로 자랍니다. Hex 64글자, Base64 44글자, base64url 43글자. 바이트 수와 인코딩된 길이 사이의 이 고정된 관계는 의도한 크기를 생성했는지 정합성 검사를 빨리 해 보는 방법입니다.

FAQ#

솔트는 비밀이어야 하나요?#

아닙니다. 솔트의 목적은 유일성입니다. 같은 비밀번호를 두 번 해싱하면 다른 다이제스트가 나오게 하는 것입니다. 해시 옆에 평문으로 저장되며, 그렇다고 체계가 약해지지는 않습니다. 비밀로 남아 있어야 하는 것은 HMAC의 키나 암호화의 비밀번호이지, 솔트가 아닙니다.

몇 바이트를 생성해야 하나요?#

16바이트(128비트)가 비밀번호 솔트와 대부분의 토큰에 대한 표준입니다. 우연한 충돌을 사실상 불가능하게 만듭니다. 세션 토큰이나 자금이 충분한 공격자에 대해 오래 버텨야 하는 무언가에는 32바이트(256비트)가 편안한 여유입니다. 그 이상은 특정 프로토콜이 요구하지 않는 한 보통 과잉입니다.

base64와 base64url의 차이는 무엇인가요?#

둘 다 같은 바이트를 인코딩하지만, base64는 URL과 파일 이름을 깨는 + 와 / 를 쓰고 = 로 패딩합니다. base64url은 이것들을 - 와 _ 로 바꾸고 패딩을 떼어 내어, 결과를 이스케이프 없이 URL 경로, 쿼리 문자열, 파일 이름에 바로 넣을 수 있게 합니다. JWT, 서명된 URL, 불투명 토큰에는 base64url을, 출력이 데이터 필드 안에만 머무를 때는 일반 base64를 쓰세요.

이것을 API 키로 쓸 수 있나요?#

그렇습니다. 32바이트를 base64url로 생성하면 256비트 엔트로피의 43글자 토큰이 나옵니다. API 키나 오래 사는 베어러 토큰으로 충분하고도 남칩니다. 다만 값을 로컬에서 생성하므로 나중에 복구할 수 없으니, 즉시 복사하세요.