Base64 vs Base64url safe

0
post-thumbnail

Base64 Encoding 방법

  1. 문자 하나를 아스키 코드로 변환한다.
  2. 아스키 코드를 8비트 이진수로 변환한다.
  3. 변환한 이진수를 앞에서부터 6비트씩 잘라서 다시 십진수로 변경한다.
  4. 값으로 나온 십진수를 Base64 Index에 대응시킨 문자로 변환한다.

Base64 vs Base64url Safe

  • 위의 Base64 Index 중 62번, 63번을 보면 각각 +, /에 대응되고, padding 문자로는 =이 사용된다.
  • 이 문자들은 URL에 포함되었을 때 문제를 일으킬 수 있다.
  • 따라서 62번과 63번을 각각 -, _의 다른 문자로 대체한 Index를 사용하는 인코딩 방식을 Base64url Safe라고 부른다.

padding의 경우 일반적으로 Base64url Safe에서는 생략하는 편이다.

Kotlin Code Sample

# Base64
Base64.getEncoder().encode()
Base64.getEncoder().encodeToString()
Base64.getDecoder().decode()
String(Base64.getDecoder().decode())
# Base64url safe
Base64.getUrlEncoder().withoutPadding().encode()
Base64.getUrlEncoder().withoutPadding().encodeToString()
Bsae64.getUrlDecoder().decode()
String(Base64.getUrlDecoder().decode())

0개의 댓글