top of page

리눅스 (Linux)에서 base64 문자열을 디코딩과 인코딩 하는 방법

이 포스팅에서는 리눅스 (Linux) 운영체제에서 base64 커맨드와 파이썬을 이용하여 base64문자열을 인코딩과 디코딩하는 두가지 방법을 알아 보겠습니다.


base64는 어디에 사용이 되나요?

base64는 다양한 여러 도메인에서 사용이 됩니다. 가장 흔한 곳은 이메일 첨부, 웹 개발, 네트워킹과 URL 인코딩등이 있습니다.


어떤 이메일 시스템은 보안 목적으로 base64를 이용하여 이미지, 문서등의 이진수 데이터 (binary data)를 문자열로 인코딩합니다. 웹 개발자는 HTTP 리퀘스트를 줄이면서 페이지 로드 속도를 빠르게 하기 위해 base64를 이용하여 HTML과 CSS에 이미지를 임베드를 합니다.


또다른 이용예제는 인증 토큰을 base64로 인코딩을 하죠. 유저이름이나 비밀번호등이 인코딩시에 마스킹이 되어 HTTP 헤더나 URL 파라미터로 추가될 때도 있습니다. 컴퓨터 네트워킹 분야에서는 base64를 사용하여 HTTP나 SMTP같은 문자 기반의 소통이 이루어 지기도 합니다.


알아야 하는 부분은 base64는 인코딩 (encoding) 방법입니다. 인코딩된 데이터는 쉽게 디코딩이 되어 원본의 데이터를 찾을 수 있습니다. 암호화 (encryption)를 하려면 절대로 base64를 사용해서는 안됩니다.


base64 커맨드를 사용하여 문자열을 인코딩하는 방법

base64를 사용하여 문자열을 인코딩하는 가장 기본적인 방법은 다음과 같이 터미널에서 echo 커맨드를 사용하는 방법입니다.



image

echo 커맨드의 특성상 결과에 새로운 라인이 추가 됩니다. 결과 값만 보여주려면 다음과 같은 커맨드를 입력합니다.



image

보시다 시피, 결과 값의 문자열이 다릅니다. 두번째의 문자열은 새로운 라인이 없고 입력된 문자만 인코딩이 된 결과 값입니다.


또한 다음과 같이 printf 커맨드를 사용하면 echo의 새로운 라인 추가 없이 입력된 문자만 인코딩이 됩니다.



image

결과 값은 이전의 echo -n을 사용한 결과값과 같죠.


리눅스를 좀 아시는 분이면 here-strings syntax를 이용하여 다음과 같이 바로 인코딩이 가능합니다.



image

echo 커맨드와 동일하게 here-strings도 문자열의 끝에 새 줄이 자동으로 포함됩니다.


base64 커맨드를 이용하여 파일을 인코딩하는 방법

base64 커맨드를 이용하여 파일을 인코딩하려면 base64 커맨드의 옵션에 파일을 입력하면 가능합니다.


테스트를 하려면 새로운 파일을 생성하여 텍스트를 입력하거나 가지고 있는 파일을 사용해도 무관합니다. 이 예제에서는 base.txt라는 파일을 다움과 같이 인코딩 하겠습니다.



image

위의 커맨드의 결과 값은 어디에도 저장되지 않고 보기용으로만 사용이 가능하죠. 결과 값을 저장하려면 다음과 같이 output.txt라는 파일에 저장을 합니다.



cat 커맨드를 이용하여 저장된 파일의 내용을 보면 결과값이 보입니다.


image


base64 커맨드를 이용하여 문자열을 디코딩하는 방법

base64 커맨드를 이용하여 문자열을 디코딩하려면 다음과 같이 -d 플래그를 사용하면 가능합니다.



image

here-strings syntax를 사용하면 다음과 같이 가능합니다.



image

어떤때는 영문과 숫자 조합이 아닌 다른 글자가 있을 수 있습니다. 그럴 시에는 -i 플래그를 사용하여 그런 문자들을 제외할 수 있습니다



파이썬 (Python)을 이용하여 문자열을 인코딩과 디코딩하는 방법

Bash보다는 Python이 더 편하면 이 방법이 더 간단할 수 있습니다. 파이썬에는 base64라는 모듈이 존재합니다. 이 모듈을 이용하여 python3 터미널 커맨드나 파이썬 코드를 작성하는 방법이 있습니다. 이 두가지 방법을 모두 알아 보겠습니다.


python3 커맨드에는 -m 이라는 모듈 플래그 (flag)가 있습니다. 이 플래그를 사용하여 base64 모듈을 불러와 사용합니다. 여기에 echo나 here-strings를 사용하여 결과 값을 다음과 같이 확인 하겠습니다.



image

디코딩을 하려면 다음과 같이 -d 플래그를 추가하면 가능합니다.



image

파이썬 프로그램을 코딩을 한다면 다음과 같은 예제를 이용하면 인코딩이 가능합니다.



.py라는 확장자를 사용하여 이 코드를 저장하면 완성입니다. 이 예제는 base64_encoder.py라는 파일명을 사용하겠습니다. 저장이 완료되면 다음의 방식으로 코드를 불러옵니다.



image

디코딩하는 방법은 다음의 코드 예제가 있습니다:



파일을 저장하고 다음과 같이 불러와 디코딩을 확인합니다.



image

여기까지 파이썬으로 base64 인코딩과 디코딩하는 방법을 알아보았습니다.

Comments


pngegg (11)_result.webp

<Raank:랑크 /> 구독 하기 : Subscribe

감사합니다! : Thanks for submitting!

bottom of page