[C#] Base64のエンコード、デコードする方法


Devlopment note / C#    作成日付 : 2020/03/26 02:19:50   修正日付 : 2020/03/26 02:20:59

こんにちは。明月です。


この投稿はC#でBase64のエンコード、デコードする方法に関する説明です。


Base64とはByteタイプになっているバイナリデータをプログラムの間にもっと扱いやすくするため、asciiコードに変換したデータをbase64といいます。

簡単に説明すると「byteデータやstreamデータをstringタイプに変換したことです。そのStringタイプになっているデータもエンコードタイプに関係ないasciiコードになっている」ということで理解するとよいです。

簡単なファイルを読み込んでbase64タイプに変換しましょう。


「hello world」というテキストを作成したファイルを準備しましょう。


そしてそれをbyteタイプに読み込んでbase64に変換しましょう。

using System;
using System.IO;
namespace Example
{
  class Program
  {
    // 実行関数
    static void Main(string[] args)
    {
      // test.txtファイルを読み込む。
      byte[] data = GetFileBinary("d:\\work\\test.txt");
      // base64のライブラリからencodeToString関数を利用してbyte[]タイプをStringタイプに変換する。
      var base64data = System.Convert.ToBase64String(data);
      // コンソールに結果を出力
      Console.WriteLine(base64data);
      
      Console.WriteLine("Press any key...");
      Console.ReadKey();
    }
    // ファイルを呼び込む関数。
    private static byte[] GetFileBinary(String filepath)
    {
      // ファイル情報取得
      var file = new FileInfo(filepath);
      // バッファ設定
      var data = new byte[file.Length];
      // ストリームを生成
      using (var stream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read))
      {
        // ファイルをストリームで読み込んでbyteタイプに変換 
        stream.Read(data, 0, (int)data.Length);
      }
      // 返却
      return data;
    }
  }
}


結果をみればHello worldのバイナリが暗号コードみたいに変換されました。


また、Bsse64になったコードをStringタイプに変換して出力しましょう。

class Program
{
  static void Main(string[] args)
  {
    // 上のコンソールに出力したBase64コード
    String base64data = "SGVsbG8gd29ybGQ=";
    // byte[]タイプにデコードする。
    byte[] data = System.Convert.FromBase64String(base64data);
    // 結果をみるため、Stringで変換して出力する。
    Console.WriteLine(Encoding.Default.GetString(data));

    Console.WriteLine("Press any key...");
    Console.ReadKey();
  }
}

コンソールで「Hello world」という結果が表示されました。


プログラム間に通信する時にBase64コードでエンコード、デコードすれば逆にデータが大きくなるので、非効率的です。ただ、byteタイプに送信すればよいからです。

でも、このbase64が必要な時があります。例えば、バイナリタイプをStringタイプに変換する時です。

暗号化する時にも必要な時があります。


ここまでC#でBase64のエンコード、デコードする方法に関する説明でした。


ご不明なところや間違いところがあればコメントしてください。

最新投稿