.Net Framework 4.7以降でBase64URLエンコードを行う方法を紹介していきます。
紹介環境
当記事は以下の環境で作成しています。
開発環境
- Visual Studio 2022
Base64URLについて
Base64をURLで扱う場合、「+」「/」「=」が含まれるため扱いずらくなっています。Base64URLはこの問題を解決し、URLで安全に利用することができます。
具体的には、「+」「/」「=」を以下のように変換します。
- 「+」→「-」に変換します。
- 「/」→「_」に変換します。
- 「=」は削除します。
Base64URLエンコードを実装する方法について
.Net Framework 4.7以降でBase64URLエンコードを実装する方法は、以下のようになります。
手順1:Microsoft.Bcl.Memoryをインストールします
Microsoft.Bcl.MemoryのパッケージをNuGetからインストールします。
NuGetからパッケージをインストールする手順は以下の通りです。
手順A:ソリューション エクスプローラーの「参照」を右クリックし、メニューから「NuGet パッケージの管理(N)」をクリックします。

手順B:NuGet パッケージ マネージャーの検索欄に「Microsoft.Bcl.Memory」と入力し、「インストール」をクリックします。※この手順は参照タブで行います。

Microsoft.Bcl.Memoryの詳細は、以下を参照してください。
手順2:Base64URLを実装します
Base64URLの実装には、Base64Urlクラスを利用します。
以下の例では、Base64URLエンコードにBase64Url.EncodeToStringを利用し、Base64URLデコードにBase64Url.DecodeFromCharsを利用します。
using System;
using System.Buffers.Text;
using System.Text;
namespace SampleApp
{
internal class Program
{
private static void Main(string[] args)
{
// Base64URLエンコード ********************************
byte[] bytes = Encoding.UTF8.GetBytes("Sample");
// Base64URLエンコード
string base64urlText = Base64Url.EncodeToString(bytes);
// 結果:U2FtcGxl
Console.WriteLine($"結果:{base64urlText}");
// Base64URLデコード **********************************
// Base64URLデコード
byte[] base64urlBytes = Base64Url.DecodeFromChars(base64urlText.ToCharArray());
string text = Encoding.UTF8.GetString(base64urlBytes);
// 結果:Sample
Console.WriteLine($"結果:{text}");
// ****************************************************
}
}
}
Base64Urlクラスは、.Net8以上・.Net Framework 4.7以上で利用することができます。詳細は、参照してください。
終わりに
.Net FrameworkでBase64URLを実装する場合、.Netのように標準実装されているクラスが存在していないので、自作する必要がありました。しかし、Microsoft.Bcl.Memoryが追加され、Base64URLの実装が楽になりました。この記事が役に立てば幸いです。