C# Base64のエンコードとデコードのサンプル

C#のBase64のエンコードとデコードを行うサンプルです。
(確認環境:Microsoft Visual Studio Community 2019)

目次

サンプル Base64エンコード(文字列をBase64にする)
  Base64デコード(Base64を文字列にする)

Base64エンコード(文字列をBase64にする)

public static string ToBase64String(byte[] inArray);
public static string Encode(string arg);
  • エンコード(テキスト形式→バイナリ形式)を行います。
  • Base64は、64種類の英数字を使用します。通信などで使われます。
    ・アルファベット(a-z)の26文字と(A-Z)の26文字で52文字
    ・数字(0-9)の10文字
    ・記号の+と/の2文字
    →52+10+2=64文字
    ※上記に加えてパディングとして=も使用します。
  • URLエンコードの場合、変換後の文字列でプラス(+)とスラッシュ(/)をマイナス(-)とアンダスコア(_)に変換する必要があります。=は削除します。
  • URLセーフの場合は、Base64UrlEncoderクラスのEncodeを使用します。
  • 以下はMicroSoftのConvert.ToBase64String メソッドのリンクです。
    https://docs.microsoft.com/ja-jp/dotnet/api/system.convert.tobase64string?view=net-5.0

URLセーフでないエンコードのサンプル

using System;
using System.Text;

class Test1
{
	static void Main()
	{
		string str1 = "PHP  コミュニティ 会社1";

		string str2 =
			Convert.ToBase64String(Encoding.UTF8.GetBytes(str1));
		Console.WriteLine(str2);
		//UEhQICDjgrPjg5/jg6Xjg4vjg4bjgqMg5Lya56S+MQ==
	}
}

13行目は、変換後の文字列にスラッシュ(/)とプラス(+)がありURLの場合、意味を持ってしまいます。イコール(=)は、パディングです。余った部分を詰めています。

URLセーフのエンコードのサンプル

using Microsoft.IdentityModel.Tokens;
using System;

class Test1
{
	static void Main()
	{
		string str1 = "PHP  コミュニティ 会社1";

		string str2 = Base64UrlEncoder.Encode(str1);

		Console.WriteLine(str2);
		//UEhQICDjgrPjg5_jg6Xjg4vjg4bjgqMg5Lya56S-MQ
	}
}

13行目は、URLで意味を持たない文字にエンコードされています。

Base64UrlEncoderを使用する場合

Base64UrlEncoderにカーソルを当ててMicrosoft.IdentityModel.Tokensをインストールします。

 

Base64デコード(Base64を文字列にする)

public static byte[] FromBase64String(string s);
public static string Decode(string arg);
  • デコード(バイナリ形式→テキスト形式)を行います。
  • Base64は、64種類の英数字を使用します。通信などで使われます。
    ・アルファベット(a-z)の26文字と(A-Z)の26文字で52文字
    ・数字(0-9)の10文字
    ・記号の+と/の2文字
    →52+10+2=64文字
    ※上記に加えてパディングとして=も使用します。
  • デコードはエンコードされた文字列を元に戻します。
  • URLセーフの場合は、Base64UrlEncoderクラスのDecodeを使用します。
  • 以下はMicroSoftのConvert.ToBase64String メソッドのリンクです。
    https://docs.microsoft.com/ja-jp/dotnet/api/system.convert.frombase64string?view=net-5.0

URLセーフでない文字列をデコードするサンプル

using System;
using System.Text;

class Test1
{
	static void Main()
	{
		string str1 = "UEhQICDjgrPjg5/jg6Xjg4vjg4bjgqMg5Lya56S+MQ==";

		string str2 = Encoding.UTF8
			.GetString(Convert.FromBase64String(str1));

		Console.WriteLine(str2);//PHP  コミュニティ 会社1
	}
}

8行目は、URLセーフではない文字列です。

URLセーフの文字列をデコードするサンプル

using Microsoft.IdentityModel.Tokens;
using System;

class Test1
{
	static void Main()
	{
		string str1 = "UEhQICDjgrPjg5_jg6Xjg4vjg4bjgqMg5Lya56S-MQ";

		string str2 = Base64UrlEncoder.Decode(str1);

		Console.WriteLine(str2);//PHP  コミュニティ 会社1
	}
}

8行目は、URLセーフの文字列です。

関連の記事

C# ハッシュ値を取得するサンプル

△上に戻る