안드로이드 기준으로 작성된 Base64 인코딩을 자바로 바꿔야 해서 찾아보다,
Base64.NO_PADDING -> withoutPadding으로 대체가 가능하다는 점을 발견하고
자바에서 Base64 인코딩 시 withoutPadding 적용 후 차이점도 정리해 보았다
안드로이드 NO_PADDING
import android.util.Base64;
public static String base64UrlEncodeStr(byte[] bytes) {
return Base64.encodeToString(bytes, Base64.URL_SAFE | Base64.NO_WRAP | Base64.NO_PADDING);
}
자바 withoutpadding
import java.util.Base64;
public class Base64Test {
public static void main(String[] args) {
String str = "Base64Test";
String encodedStr = Base64.getEncoder().encodeToString(str.getBytes());
String withoutPadding = Base64.getEncoder().withoutPadding().encodeToString(str.getBytes());
System.out.println("encodedStr : " + encodedStr);
System.out.println("withoutPadding : " + withoutPadding);
}
}
결과
encodedStr : QmFzZTY0VGVzdA==
Base64 인코딩은 인코딩된 문자열의 길이가 3의 배수가 아닌 경우 기본적으로 인코딩 된 바이트 데이터 끝에
패딩문자(=)를 추가합니다. 디코딩 시에는 패딩 문자 삭제함
withoutPadding : QmFzZTY0VGVzdA
패딩 문자를 빼고 인코딩된 출력값을 얻을 수 있고, 이 출력 결과는 다시 디코딩할 수 없습니다.
참고
https://recordsoflife.tistory.com/331
https://www.baeldung.com/java-base64-encode-and-decode
'Programming > Back-End' 카테고리의 다른 글
REST, REST API, RESTful 개념 정리 (36) | 2023.09.23 |
---|---|
[Spring] 스프링 프레임워크에서 Thymeleaf 사용하기(XML 설정) (46) | 2023.09.19 |
[Mybatis] delete 여러 테이블 데이터 한번에 삭제하기 (42) | 2023.09.18 |
java.net.BindException "Address alredy in use: bind" 해결/특정 포트 죽이는 방법 (37) | 2023.09.13 |
[Java/자바] JWT 토큰 발급 및 JWT/JWK 검증 처리 방법 정리 (1) | 2023.09.01 |