ホームページ > バックエンド開発 > C++ > C# で URL セーフな Base64 エンコーディングとデコーディングを実現するにはどうすればよいですか?

C# で URL セーフな Base64 エンコーディングとデコーディングを実現するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-25 03:07:11
オリジナル
905 人が閲覧しました

How to Achieve URL-Safe Base64 Encoding and Decoding in C#?

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

Base64 エンコードは、URL ベースのアプリケーションを扱うときにデータの整合性と可読性を確保するために重要です。 C# では、組み込みの Base64 エンコード機能により、バイナリ データをテキスト ベースの表現に変換する便利な方法が提供されます。ただし、エンコードされた文字列にパディング文字 (「==」) が追加されるため、URL で使用すると問題が発生する可能性があります。

URL セキュリティ エンコーディング

この制限を克服するために、URL セーフ エンコーディングではパディング文字が削除され、特定の問題のある文字 (" "、"/"、"=") が URL フレンドリな文字 ("-"、"_"、"") に置き換えられます。これにより、解釈上の問題を引き起こすことなく、エンコードされた文字列を安全に URL パラメータに転送できるようになります。

C# での URL セーフ エンコーディングの実装

Java のコーデック ライブラリとは異なり、C# には URL セーフ エンコーディング関数が組み込まれていません。ただし、いくつかの簡単な手順で同じ結果を得ることができます。

  1. 通常の Base64 エンコードを実行するには、Convert.ToBase64String() を使用します。
  2. エンコードされた文字列からパディングを削除するには、TrimEnd() を使用します。
  3. 問題のある文字を Replace() に置き換えます (たとえば、「 " を「-」に、「/」を「_」に置き換えます)。

<code class="language-csharp">byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes("StringToEncode");
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes)
        .TrimEnd(new char[] {'='}).Replace('+', '-').Replace('/', '_');</code>
ログイン後にコピー

注: 効率を向上させるために、パディング文字配列を静的な読み取り専用フィールドとして定義できます。

プロセスを逆にします

URL セーフにエンコードされた文字列をデコードして元の形式に戻すには、次のプロセスを逆に実行します。

  1. URL に適した文字を元の対応する文字に置き換えます。
  2. 必要に応じて、文字列を「=」文字で 4 の倍数に埋め込みます。
  3. Convert.FromBase64String() を使用して文字列をバイナリ データに変換し直します。

<code class="language-csharp">string incoming = returnValue
    .Replace('_', '/').Replace('-', '+');
switch(incoming.Length % 4) {
    case 2: incoming += "=="; break;
    case 3: incoming += "="; break;
}
byte[] bytes = Convert.FromBase64String(incoming);
string originalText = Encoding.ASCII.GetString(bytes);</code>
ログイン後にコピー

これらの手順を組み合わせることで、C# で URL セーフ エンコーディングを効果的に実装できます。相互運用性が必要なシナリオで互換性を確保するには、一般的に使用されるコーデック ライブラリのメソッドがこの実装と一致しているかどうかをテストすることが重要です。

以上がC# で URL セーフな Base64 エンコーディングとデコーディングを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート