Wie das zu erreichen ist Base64-URL-sichere Codierung in C#?
Möchte ich erreichen Base64-URL-sichere Codierung in C#. In Java haben wir die gemeinsame Codec
Bibliothek, die mir eine URL-sichere-codierte Zeichenfolge. Wie kann ich erreichen das gleiche mit C#?
byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes("StringToEncode");
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);
Den obigen code konvertiert Base64, aber es pads ==
. Ist es Weg, das zu erreichen URL-sichere Codierung?
Kannst du nicht einfach verwenden
In der namespace-Url-Klasse ist in c#?
Werfen Sie einen Blick: msdn.microsoft.com/en-us/library/... Sie verweisen müssen
Es ist die Umwandlung = in "%3D". Ich will nicht, dass.
Also, was meinst du
Url.Encode
auf string in BASE64
?In der namespace-Url-Klasse ist in c#?
Werfen Sie einen Blick: msdn.microsoft.com/en-us/library/... Sie verweisen müssen
System.Web
Montage.Es ist die Umwandlung = in "%3D". Ich will nicht, dass.
Also, was meinst du
url safe
? %3D
ist url-sicher.InformationsquelleAutor Vishvesh Phadnis | 2014-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es üblich, zu einfach swap alphabet für die Verwendung in urls, so dass keine %-Codierung ist notwendig; nur 3 von 65 Zeichen sind problematisch -
+
,/
und=
. die häufigsten Ersatzteile sind-
im Ort+
und_
im Ort/
. Wie bei der Polsterung: entfernen Sie es einfach (die=
); Sie können ableiten die Höhe der Polsterung benötigt. Am anderen Ende: einfach den Prozess umkehren:mit:
und Umgekehrt:
Die interessante Frage jedoch ist: ist das der gleiche Ansatz, der der "gemeinsamen codec-Bibliothek" verwendet? Es wäre sicherlich eine vernünftige erste, was zu testen - das ist ein ziemlich gemeinsamen Weg.
dies ist auch in der erwähnten wiki-Seite Base64 unter URL-Anwendungen. en.wikipedia.org/wiki/Base64
Sie haben diese Funktion 'stackoverflow.com/questions/1886686/...', das bedeutet all die harte Arbeit für Sie.
Vielen Dank, Marc, ich war versuchen zu decodieren einer Zeichenfolge erstellt von Java
encodeBase64URLSafeString
und am Ende das Problem war die fehlende Polsterung am Ende der Zeichenfolge, die Sie lösen mit denswitch
Aussage!!!Vielen Dank für die Aufzeichnung, die diese Zeichen. Wenn die Kopplung verschiedener Sprachen einige Funktionen nicht zurückgegeben werden gleiche Ergebnisse bei der Kodierung mit encodeBASE64URL. Ich bin mit PC-Soft ' s WinDev v22 und verarbeitet den problematischen chars, aber der Verkäufer, ich arbeite mit dem, was immer Sie verwenden, nicht..., so dass Sie unsere HMAC_SHA_256 Signaturen, wo keine passende, und ich fand das Problem in der Codierung!
InformationsquelleAutor Marc Gravell
Können Sie Klasse
Base64UrlEncoder
aus dem namespaceMicrosoft.IdentityModel.Tokens
.Nur ein Hinweis: Microsoft.IdentityModel.Token ist ein NuGet-Paket heruntergeladen werden.
InformationsquelleAutor Jerome
Basierend auf den Antworten, die hier mit einigen performance-Verbesserungen, die wir veröffentlicht haben, ein sehr einfach zu bedienendes url-sichere base64-Umsetzung NuGet mit dem source-code verfügbar auf GitHub (MIT Lizenz).
Nutzung ist so einfach wie
"string".Replace
für dieencode
Methode, sondern eine Schleife mit manuellen ersetzt für diedecode
?Ich muss überdenken, und es laufen einige benchmarks, aber es ist, weil wir auf die letztere, so ist es vertreten durch einen anbauen Liste von Zeichen, anstatt eine unveränderliche Zeichenfolge.
Eine weitere Klasse mit Rückgabetyp = string statt : github.com/vndevpro/architecture-common/blob/master/...
InformationsquelleAutor Mahmoud Al-Qudsi
Verwenden System.Web.HttpServerUtility.UrlTokenEncode(bytes) zu Kodieren, und
System.Web.HttpServerUtility.UrlTokenDecode(bytes) zu entschlüsseln.
InformationsquelleAutor Karanvir Kang
Weitere option, wenn Sie mit ASP.NET Kern, wäre die Verwendung
Microsoft.AspNetCore.WebUtilities.WebEncoders.Base64UrlEncode
.Wenn Sie nicht mit ASP.NET Kern, die
WebEncoders
Quelle ist verfügbar unter der Apache-2.0-Lizenz.InformationsquelleAutor Kevinoid
Hier ist eine weitere Methode zum Dekodieren von url-sicher, base64 war Kodieren, indem Sie auf dieselbe Weise und mit Marc. Ich weiß nur nicht, warum die
4-length%4
gearbeitet(tut es).Wie folgt, nur die Herkunft ist die bit-Länge sind gemeinsame Vielfache von 6 und 8, base64 nicht append "=" zu führen.
So können wir tun es Umgekehrt, wenn das Ergebnis der bit-Länge kann nicht durch 8 teilbar, es wurde angehängt:
InformationsquelleAutor joyjy
Mithilfe von Microsoft cryptographic engine in der UWP.
InformationsquelleAutor visc