도구스개발

웹소켓 Sec-WebSocket-Accept 계산기

Sec-WebSocket-Key로 서버가 돌려줘야 할 Sec-WebSocket-Accept 값을 RFC 6455 그대로 계산합니다. 핸드셰이크 디버깅에 씁니다.

클라이언트가 요청 헤더로 보낸 값을 그대로 붙여넣으세요

계산 절차

Sec-WebSocket-Accept = Base64( SHA-1( Sec-WebSocket-Key + GUID ) )

GUID는 웹소켓 프로토콜 전용 고정값입니다(무작위가 아닙니다):
258EAFA5-E914-47DA-95CA-C5AB0DC85B11

이 GUID를 아는 서버만 진짜 웹소켓 서버라는 확인 장치입니다. 웹소켓을 모르는 일반 HTTP 서버나 프록시가 우연히 같은 Accept 값을 돌려줄 가능성을 없애 줍니다. 해시 계산은 브라우저의 Web Crypto API로 이 기기 안에서만 이뤄집니다.

사용 방법

  1. 1클라이언트가 보낸 Sec-WebSocket-Key 값을 넣습니다(또는 무작위로 하나 만듭니다).
  2. 2계산된 Sec-WebSocket-Accept 값을 확인합니다.
  3. 3서버 응답의 Sec-WebSocket-Accept 헤더와 비교해 핸드셰이크가 맞는지 확인합니다.

자주 묻는 질문

Sec-WebSocket-Key 뒤에 고정 GUID "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"을 이어붙여 SHA-1로 해시한 뒤 Base64로 인코딩합니다. RFC 6455 §4.2.2가 정한 절차이며, 이 GUID는 무작위가 아니라 웹소켓 프로토콜 전용으로 정해진 상수입니다.

웹소켓을 모르는 일반 HTTP 서버나 프록시가 우연히 같은 값을 돌려줄 가능성을 없애기 위해서입니다. 이 GUID를 아는 서버만 진짜 웹소켓 서버라는 확인 장치입니다.

계산 자체는 됩니다. 다만 RFC 6455는 이 키가 무작위 16바이트를 Base64로 인코딩한 값이어야 한다고 정하고 있어, 형식이 맞지 않으면 규격을 지키는 서버가 이 키를 신뢰하지 않을 수 있습니다. 이 계산기는 형식이 유효한지도 함께 보여줍니다.

다릅니다. 그 계산기는 연결이 맺어진 뒤 데이터가 오가는 프레임의 헤더 크기를 다룹니다. 이 계산기는 그 앞 단계, 즉 HTTP 업그레이드 요청·응답으로 연결을 맺는 핸드셰이크 단계만 다룹니다.

전송되지 않습니다. SHA-1 해시 계산은 브라우저의 Web Crypto API로 이 기기 안에서만 이뤄지고, 입력값은 밖으로 나가지 않습니다.

알아두면 좋은 점

  • RFC 6455 §1.3·§4.2.2를 기준으로 합니다.
  • RFC 6455 §1.3의 예시값(키 "dGhlIHNhbXBsZSBub25jZQ==" → Accept "s3pPLMBiTxaQ9kYGzzhZRbK+xOo=")으로 검산했습니다. MDN "Writing WebSocket servers" 문서도 같은 예시값을 확인해 줍니다(WebSearch, 2026-09-05).
  • 해시는 브라우저의 Web Crypto API(crypto.subtle.digest)로 계산합니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 5일 · 결과는 참고용 추정치입니다.