C # Methode wie Base64String, aber nur alphanumerische (keine plus oder Schrägstrich)
-
06-09-2019 - |
Frage
Gibt es eine C # Methode, die Convert.ToBase64String ähnlich funktioniert, aber erzeugt nichts außer alphanumerischer Ausgabe?
Danke!
Lösung
Sie suchen wahrscheinlich dann so etwas wie Base32-Codierung. Es gibt einen Base32 Encoder / Decoder für C # hier von Michael Giagnocavo. Es verwendet eine Kombination aus Großbuchstaben und Zahlen.
Es gibt auch eine ähnliche Diskussion auf Stackoverflow hier .
EDIT: Und wenn durch Zufall dies für URL-safe verwandte Base64-Codierung, nur Base64 tun und "+" mit ersetzen "-" und "/" mit "_". Aber ich nehme an, dass Sie es nicht für das wollen.
Andere Tipps
Die Antworten sind jetzt ein wenig veraltet. Zum Wohle der zukünftigen Forscher: Der beste Weg, dies jetzt in C # zu handhaben ist:
byte[] b; // fill your byte array somehow
string s = System.Web.HttpServerUtility.UrlTokenEncode(b);
Dies gibt eine Base64-codierte Zeichenfolge, die URL-sicher ist (das ist, was Sie sagen, Sie in den Kommentaren zu Ihrer Frage wirklich nach sind).
Sie können dann entschlüsseln Sie es erneut verwenden, Sie ahnen es:
byte[] b = System.Web.HttpServerUtility.UrlTokenDecode(s);
Sie können ersetzen + oder mit einem vordefinierten Zeichenfolge zerschneiden, wenn möglich.
Eine gemeinsame Variante des Basis-64 (für den Einsatz auf Abfrage-String) zu verwenden ist ‚-‘ und ‚_‘ anstelle von ‚+‘ und ‚/‘. Vielleicht ein bisschen Replace(...)
an jedem Ende würde die Arbeit machen?
Sie können mit BitConverter.ToString (), die Sie einen Hex-String geben. Allerdings werden die resultierenden Strings länger als Base64-Codierung.
Ich war für einen solchen wie Encoder suchen und ich https://github.com/renmengye/ Base62-csharp /
Es ist ein Encoder / Decoder in "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" Zeichenraumbereich.
Ich wickelte nur ihre Methoden mit
System.Text.Encoding.UTF8.GetBytes(plainText);
und
System.Text.Encoding.UTF8.GetString(decoded);
nennt es zu ermöglichen, leicht mit Streichern zu arbeiten.