본문 바로가기

프로그래밍/C#

C#으로 BASE 64 인코딩 및 디코딩 처리

BASE 64(베이스 64)

Base 64 (베이스 육십사)란 8비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념

 Base 64를 글자 그대로 번역하여 보면 64진법이란 뜻

64진법이 컴퓨터에서 흥미로운 것은, 64가 2의 제곱수(64 = 26)이며, 2의 제곱수들에 기반한 진법들 중에서 화면에 표시되는 ASCII 문자들을 써서 표현할 수 있는 가장 큰 진법이기 때문이다. 즉, 다음 제곱수인 128진법에는 128개의 기호가 필요한데 화면에 표시되는 ASCII 문자들은 128개가 되지 않는다.

Base 64는 62개는 알파벳 A-Z, a-z와 0-9를 사용하고 있으며 마지막 두 개를 어떤 기호를 쓰느냐의 차이

ex) ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/


※ MIME(Multipurpose Internet Mail Extensions)는 전자 우편을 위한 인터넷 표준 포맷이다. 

전자우편은 7비트 ASCII 문자를 사용하여 전송되기 때문에, 8비트 이상의 코드를 사용하는 문자나 이진 파일들은 MIME 포맷으로 변환되어 SMTP로 전송된다.

실질적으로 SMTP로 전송되는 대부분의 전자 우편은 MIME 형식이다. MIME 표준에 정의된 content types은 HTTP와 같은 통신 프로토콜에서 사용되며, 점차 그 중요성이 커지고 있다.

MIME은 ASCII가 아닌 문자 인코딩을 이용해 영어가 아닌 다른 언어로 된 전자 우편을 보낼 수 있는 방식을 정의.

또한 그림, 음악, 영화, 컴퓨터 프로그램과 같은 8비트짜리 이진 파일을 전자 우편으로 보낼 수 있도록 한다.

메시지를 MIME 형식으로 변환하는 것은 전자 우편 프로그램이나 서버 상에서 자동으로 이루어진다.

참고사이트 (위키백과)  : https://ko.wikipedia.org/wiki/MIME


○ 아래와 같이 확장 메서드로 하나 만들어 놓고 사용하면 좋겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static class ToStringExtendMethod
{
    public static string Base64EncodingToString(this string str)
    {
        // 배열 변환
        var bytes = Encoding.UTF8.GetBytes(str);
        // Base64로 인코딩
        return Convert.ToBase64String(bytes);
    }
 
    public static string Base64DecodingTostring(this string encodingString)
    {
        // 배열 변환
        var orgBytes = Convert.FromBase64String(encodingString);
        // 유니코드 문자열로 변환
        return Encoding.Unicode.GetString(orgBytes);
    }
}
cs