btoa(stringToEncode)
const text = "Hello, World!";
const encoded = btoa(text);

console.log(encoded); // 출력: SGVsbG8sIFdvcmxkIQ==
const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
                <text x="0" y="15">Hi</text>
             </svg>`;
const encodedSVG = btoa(svg);
const dataURI = `data:image/svg+xml;base64,${encodedSVG}`;

// HTML <img> 태그에 삽입
const img = document.createElement("img");
img.src = dataURI;
document.body.appendChild(img);
// 예시 JWT 토큰 (실제 토큰은 훨씬 길 수 있습니다)
const token = "eyJhbGciOiJIUInR5cCI6IkpXVCJ9.eyJ1c2VImlhdCI6MTY3ODA0ODgwMH0.SignaturePart";

// 1. 페이로드(두 번째 부분) 추출
// JWT는 "헤더.페이로드.서명" 형태로 구성되므로 split('.')로 나눕니다
const payloadBase64 = token.split('.')[1];
console.log(`추출된 페이로드(Base64): ${payloadBase64}`);

// 2. atob()를 사용하여 디코딩 (Base64 → JSON 문자열)
// btoa()는 인코딩, atob()는 디코딩 용도로 사용됩니다
const decodedJsonString = window.atob(payloadBase64);
console.log(`디코딩된 JSON 문자열: ${decodedJsonString}`);

// 3. JSON.parse()로 문자열을 객체화하여 정보 확인
const payloadObject = JSON.parse(decodedJsonString);
console.log(`사용자 ID: ${payloadObject.userId}`);
console.log(`토큰 만료 시간(exp): ${new Date(payloadObject.exp * 1000)}`);

// ⚠️ 주의:
// 실제 JWT 사용 시 민감 정보 처리에 주의하고, 
// 클라이언트에서 디코딩만으로 인증 여부를 판단하면 안 됩니다.