Heim >Backend-Entwicklung >C++ >Wie kann man Strings für Base64-URL-Safe in C#codieren?

Wie kann man Strings für Base64-URL-Safe in C#codieren?

DDD
DDDOriginal
2025-01-25 03:26:09719Durchsuche

How to Encode Strings to Base64 URL-Safe in C#?

Detaillierte Erläuterung der Base64-URL-Sicherheitskodierung in C#

Base64 URL-sichere Codierung ist eine häufig verwendete URL-Codierungstechnik, die die %-Codierung von Zeichen überflüssig macht. In diesem Artikel wird untersucht, wie diese Codierung in C# implementiert wird.

JavaScript-Methodenvergleich

Java kann mithilfe der Codec-Bibliothek problemlos eine URL-sichere Codierung implementieren. Ein ähnlicher Ansatz kann mit C# verfolgt werden.

Base64-Konvertierung

Der folgende Code zeigt, wie eine Zeichenfolge in Base64 konvertiert wird:

<code class="language-csharp">byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes("StringToEncode");
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);</code>

Diese Methode fügt jedoch am Ende des codierten Ergebnisses eine doppelte Gleichheitszeichenauffüllung (=) hinzu.

URL-sichere Codierung implementieren

Um eine URL-sichere Kodierung zu erreichen, müssen wir die folgenden Schritte ausführen:

  1. Ersatzzeichen: Ersetzen Sie „ “ durch „-“ und „/“ durch „_“.
  2. Auffüllung entfernen:Entfernen Sie alle Auffüllungszeichen „=“.

Der folgende Code implementiert diese Änderungen:

<code class="language-csharp">char[] padding = { '=' };
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes)
        .TrimEnd(padding).Replace('+', '-').Replace('/', '_');</code>

Beachten Sie, dass padding als Array definiert ist, das „=“-Zeichen enthält.

Dekodierungsprozess

Der Dekodierungsprozess ist wie folgt:

<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>

Vergleich mit der Java-Codec-Bibliothek

Es muss weiter überprüft werden, ob dieser Ansatz mit Javas Ansatz der „gemeinsamen Codec-Bibliothek“ konsistent ist. Dies wäre eine interessante Richtung zum Testen.

Das obige ist der detaillierte Inhalt vonWie kann man Strings für Base64-URL-Safe in C#codieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn