반응형
var b64DecodeUnicode = function(str) {
return decodeURIComponent(
atob(str).replace(/(.)/g, function (m, p) {
var code = p.charCodeAt(0).toString(16).toUpperCase();
if (code.length < 2) {
code = "0" + code;
}
return "%" + code;
})
);
};
var base64_url_decode = function(str) {
var output = str.replace(/-/g, "+").replace(/_/g, "/");
switch (output.length % 4) {
case 0:
break;
case 2:
output += "==";
break;
case 3:
output += "=";
break;
default:
throw "Illegal base64url string!";
}
try {
return b64DecodeUnicode(output);
} catch (err) {
return atob(output);
}
}
그 후, base64 URL-safe encoding 된 문자열을 decode 합니다.
'-' 와 '_'를 왜 '+' 와 '/'로 바꾸어주는 걸까요??
base64 encoding 방법은 2진수의 데이터를 문자 코드에 영향을 받지 않게 공통 ascii 영역의 문자들로 바꾸는 인코딩 방식입니다. 64개의 ascii code를 사용하는데 a-z, A-Z, 0-9, '+', '/' 를 사용하고 있습니다.
다만, '+', '/' 특수 문자는 전송하면 정상적으로 해당 값이 전송되지 않습니다.
그래서 '+'와 '/'를 '-'와 '_'로 바꾸어 준 것이 URL-safe 입니다.
'==' 와 '='는 뭔데 결과에 덧붙여주는 건가요??
==와 =는 패딩입니다. 0과 같은 역할을 하고 있습니다.
Flutter/ jwt token을 decoding하고, 정보를 얻어보자
배경 token을 사용할 때, Refresh token과 access token으로 나누어 보통 사용합니다. access token의 만료 시간이 임박했을 때만 refresh해주고 싶은 마음이 있어서, 찾아봤습니다. 같은 상황이신 분들께도 도
velog.io
반응형
'애플리케이션 개발 > ios' 카테고리의 다른 글
[ios] JWT (0) | 2022.12.13 |
---|---|
[Mac] Git 설치 및 연동 (0) | 2022.05.06 |
[Mac] M1 자바 버전 11로 변경 (0) | 2022.04.29 |
Could not build Objective-C module 'Firebase' (0) | 2022.01.22 |
M1에서 터미널 사용 (0) | 2022.01.22 |