티스토리 뷰
Kubernetes Secret
은 base64로 인코딩된 값을 data로 갖는다.
data 필드의 모든 키(key)에 해당하는 값(value)은 base64로 인코딩된 문자열이어야 한다.
그럼 일반적인 string을 base64로 어떻게 인코딩할까?
아주 간단하다. echo
, base64
를 사용하면 된다.
$ echo 'want-to-encode-this' | base64
d2FudC10by1lbmNvZGUtdGhpcwo=
근데 위와 같이 하는 경우, base64 인코딩 된 값을 비교하거나 할 때 문제가 생길 수 있다. 왜냐하면 echo
는 마지막에 무조건 newline(\n
) 을 포함하고 있기 때문이다. 즉, 위의 예제의 경우 want-to-encode-this\n
을 base64로 인코딩하고 있는 것이다.
echo
에서 newline을 제거하고 싶다면 -n
옵션을 사용하면 된다. 위 예제에서 -n
옵션을 사용하는 경우 base64로 인코딩된 값이 달라지는 것을 확인할 수 있다.
$ echo -n 'want-to-encode-this' | base64
d2FudC10by1lbmNvZGUtdGhpcw==
-n
옵션을 사용해 마지막에 newline을 임의적으로 넣어 base64로 인코딩하면 맨 처음의 예제와 같은 인코딩된 문자열이 나오는 것을 확인할 수 있다.
$ echo -n 'want-to-encode-this\n' | base64
d2FudC10by1lbmNvZGUtdGhpcwo=
결론
- 보통 프로그래밍 언어들에서 base64 인코딩을 할 때 newline은 포함하지 않은 상태에서 문자열을 인코딩하다보니
echo
로 인코딩한 값과 차이가 있어 문제가 발생할 수 있으므로 유의하자.(인코딩한 값을 비교하는 경우에 유의하자) echo
를 사용해 인코딩할 때는-n
옵션을 사용하자.
320x100
반응형
'Development' 카테고리의 다른 글
인증(AuthN)과 인가(AuthZ)에 대한 이야기 (0) | 2022.06.12 |
---|---|
Pagination(Paging), offset을 사용하지 맙시다 (2) | 2022.06.12 |
Amazon Linux jdk 17 설치방법 (0) | 2022.01.19 |
Command(커맨드) / Query(쿼리) (0) | 2022.01.18 |
Consistent hashing (Hash ring) (1) | 2022.01.06 |
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- tag
- Kubernetes
- docker
- hexagonal architecture
- Log
- 쿠버네티스
- Spring boot
- 알고리즘
- 로그
- MySQL
- python
- 백준
- 비동기
- gradle
- Intellij
- WebFlux
- 클린 아키텍처
- 하루
- container
- Istio
- Spring
- k8s
- HTTP
- c++
- 일상
- java
- boj
- jasync
- Clean Architecture
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함