base64Url encoding

agnusdei·2023년 7월 24일
0

Base64URL은 Base64 인코딩 방식의 변형입니다. 이 방식은 URL과 파일 시스템에서 안전하게 사용할 수 있게끔 특수 문자를 변경하는 것을 기반으로 합니다.

Base64 인코딩에 대한 기본 이해

먼저, Base64 인코딩에 대해 간략하게 이해하겠습니다. Base64는 바이너리 데이터를 ASCII 문자열로 변환하는 인코딩 방식입니다. 원래 8비트 바이너리 데이터를 6비트 단위로 분리하여, 각 6비트를 하나의 문자로 표현합니다. 이 때 문자로 변환할 때 사용하는 64개의 문자가 Base64 인코딩의 이름의 기원입니다.

이 64개의 문자는 대소문자 알파벳(A-Z, a-z), 숫자(0-9), 그리고 '+'와 '/'로 구성됩니다. 이 외에 바이너리 데이터의 길이가 6의 배수가 아닐 경우 패딩을 위해 '=' 문자를 사용합니다.

Base64URL의 특징

그런데 Base64 인코딩에 사용되는 '+', '/', '=' 문자는 URL과 파일 시스템에서 특별한 의미를 가지거나 문제를 일으킬 수 있습니다. 예를 들어, '+'는 URL에서 공백을 나타내고, '/'는 경로 구분자로 사용되며, '='은 URL 쿼리 문자열에서 다른 값을 구분하는 데 사용됩니다.

이러한 문제를 해결하기 위해 Base64URL이라는 변형 방식이 제안되었습니다. Base64 인코딩과 동일하게 바이너리 데이터를 ASCII 문자열로 변환하지만, URL과 파일 시스템에서 안전하게 사용할 수 있도록 특수 문자를 변경합니다:

  • '+'는 '-'로 대체됩니다.
  • '/'는 '_'로 대체됩니다.
  • 패딩을 위한 '='는 생략될 수 있습니다.

따라서 Base64URL 인코딩된 문자열은 URL과 파일 시스템에서 안전하게 전송하고 저장할 수 있습니다. Base64와 Base64URL은 인코딩 방식이 거의 동일하므로, 한 방식으로 인코딩된 문자열을 다른 방식으로 디코딩할 수 있습니다 (단, 알맞게 문자를 대체하거나 패딩을 추가하는 등의 처리가 필요합니다).

마지막으로, Base64URL은 Base64와 마찬가지로 인코딩된 데이터를 복호화하지 않고도 원래의 바이너리 데이터 크기를 추정할 수 있다는 장점이 있습니다. 이는 Base64URL 인코딩된 문자열의 길이가 원래의 바이너리 데이터 크기의 대략 4/3임을 의미합니다.

0개의 댓글