❓ 해당 내용이 궁금해진 이유?

현재 금융권 대기업에 파견을 나가있는데 파일을 전송할 때 Base64로 변환을 해서 전송을 하고 있었습니다.

여기서 왜 굳이 Base64로 변환해서 전송을 하는지에 대해서 궁금해졌습니다.

 

  • 인코딩, 디코딩 해야하는 불편함이 있는데 굳이 사용하는 이유는 뭘까?
  • Base64로 변환하면 용량이 30퍼센트 정도 늘어나 비효율적이지 않나?
  • multipart/form-data를 사용하지 않는 이유는 뭘까?

 

 

❓ 굳이 Base64로 인코딩 하는 이유는?

바이너리 데이터를 텍스트 기반의 규격으로 다룰 수 있기 때문이다.

이밎 파일등을 Web에서 필요로 할 때 Base64로 인코딩하면 UTF-8과 호환 가능한 문자열을 얻을 수 있다.

 

기존 ASCII 코드는 시스템간 데이터를 전달하기에 안전하지 않다. 모든 Binary 데이터가 ASCII 코드에 포함되지 않으므로 제대로 읽지 못한다. 반면 Base64는 ASCII 중 제어문자와 일부 특수문자를 제외한 53개의 안전한 출력 문자만 이용하므로 데이터 전달에 더 적합하다.

 

위 내용을 보면 용량이 30 ~ 33퍼센트 증가해도 안정성을 위해 Base64 인코딩을 사용한다는 것을 알 수 있게 되었다.

그런데 multipart/form-data를 사용하면 되지 않을까?

 

위 의문에 대해서는 정확한 의도는 모르지만 아래와 같은 이유가 있지 않을까 정의해봤습니다.

Base64로 인코딩된 텍스트에 Header와 Tailer 양식을 만들어 정보를 담아서 전송하기  위해서 사용한다.

그 정보를 바탕으로 해당 파일이 무엇인지 파악할 수 있게 해놓는 시스템이 구축되어 있기 때문이 아닐까 생각해봤습니다.

 

 

 

❓ Base64는 암호화이다?

Base64를 사용 하는 이유에서 암호화이기 때문이라는 얘기를 들었습니다.

여러 블로그를 확인해본결과 암호화라고 부르는 경우도 있고 단순히 인코딩이라고 하는 경우도 있었습니다.

좀 더 깊게 찾아보기 위해 스택오버플로우(Stack Overflow)와 쿼라(Quora)에 찾아보기로 했습니다.

 

그 결과 Base64는 바이너리 데이터를 출력 가능한 문자로 나타내기 위한 인코딩이라는 것을 알게되었습니다.

생각해보면 Base64가 나열된 문자는 디코딩을 하기 전까지는 읽기 힘들다는 것 밖에 없었습니다.

암호화가 되어 있었다고 하면 암호화 키와 복호화 키가 있을텐데 그런 것도 없었습니다.

 

단순히 해당 텍스트가 Base64 형식이라는 것을 알게되면 누구나 쉽게 디코딩이 가능하기 때문에 암호화는 아니라는 것입니다.

 

 

 

❗️ 위 내용을 작성하면서 내가 부족하다고 느낀 부분

  • multipart/form-data를 통해 파일을 전송하는 것을 사용했지만 해당 내용에 대해 거의 아무것도 모르고 있었다.
  • 어떤 방식으로 파일을 전송하는게 좀 더 효율적일지에 대해 고민하지 않고 그동안 코드를 작성한 점.
  • Base64 인코딩에 대해 너무 두루뭉실하게 알고 있었다.
  • 지금까지 구현한 것에 대해 궁금점을 가지지 않고 그냥 코드를 작성하고 있었다.
    => 깊이가 없는 상태

 


참고자료

  • [OKKY] Base64는 왜 사용하는 걸까요? => 링크
  • [Stack Overflow] Why do we use Base64? => 링크
  • [Stack Overflow] is Base64 Encryption? => 링크
  • [Quora] is Base64 encoding secure? => 링크
  • [블로그 코딩배우는 학생] 우리가 Base64를 사용하는 이유 => 링크
반응형

+ Recent posts