ホームページ >バックエンド開発 >C++ >C#でURLセーフBase64エンコードを実装する方法は?

C#でURLセーフBase64エンコードを実装する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-25 03:12:09394ブラウズ

How to Implement URL-Safe Base64 Encoding in C#?

C# での URL セーフな Base64 エンコード

データ送信の分野では、Base64 エンコードは、バイナリ データをさまざまな通信チャネルで安全に送信できるテキスト表現に変換する上で重要な役割を果たします。ただし、標準の Base64 エンコードでは、予約文字とパディング文字が存在するため、URL 経由でデータを渡すときに問題が発生する可能性があります。この問題を解決するために、URL セーフな Base64 エンコーディングが登場しました。

Java と C# の比較

Java では、一般的に使用される Codec ライブラリが、URL セーフな Base64 エンコーディングを実装する便利な方法を提供します。ただし、C# ではこの機能をどのように複製するか疑問に思うかもしれません。

解決策

C# は、外部ライブラリに依存せずに URL セーフな Base64 エンコーディングを実装する簡単なソリューションを提供します。これには 2 つの重要な手順が含まれます:

  1. 問題のある文字を置き換えます: 文字「 」、「/」、および「=」は URL の予約文字であり、デコード エラーを引き起こす可能性があります。これを回避するには、「 」を「-」に、「/」を「_」に置き換え、パディング文字「==」を削除します。
<code class="language-csharp">string returnValue = System.Convert.ToBase64String(toEncodeAsBytes)
        .TrimEnd(padding).Replace('+', '-').Replace('/', '_');</code>
  1. 逆のプロセス: URL セーフにエンコードされた文字列をデコードするには、逆のプロセスを実行し、「-」を「」に、「_」を「/」に置き換え、適切な埋め込みを追加します。
<code class="language-csharp">string incoming = returnValue
    .Replace('_', '/').Replace('-', '+');
switch(returnValue.Length % 4) {
    case 2: incoming += "=="; break;
    case 3: incoming += "="; break;
}
byte[] bytes = Convert.FromBase64String(incoming);
string originalText = Encoding.ASCII.GetString(bytes);</code>

カスタムメソッドまたは外部ライブラリ?

このアプローチが Java の「ユニバーサル コーデック ライブラリ」で使用されているアプローチと一致しているかどうか疑問に思う人もいるかもしれません。ただし、これは C# で必要な機能を提供する一般的で合理的な手法です。

以上がC#でURLセーフBase64エンコードを実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。