-
Wie kann ich einen base64-codierten String aus einem String zurückgeben?
-
Wie kann ich einen base64-codierten String in einen String entschlüsseln?
Antworten
Zu viele Anzeigen?
julius-huck
Punkte
1218
URL sichere Base64-Codierung/Dekodierung
public static class Base64Url
{
public static string Encode(string text)
{
return Convert.ToBase64String(Encoding.UTF8.GetBytes(text)).TrimEnd('=').Replace('+', '-')
.Replace('/', '_');
}
public static string Decode(string text)
{
text = text.Replace('_', '/').Replace('-', '+');
switch (text.Length % 4)
{
case 2:
text += "==";
break;
case 3:
text += "=";
break;
}
return Encoding.UTF8.GetString(Convert.FromBase64String(text));
}
}
chetan chaphekar
Punkte
139
Sie können die folgende Routine verwenden, um einen String in das Base64-Format umzuwandeln
public static string ToBase64(string s)
{
byte[] buffer = System.Text.Encoding.Unicode.GetBytes(s);
return System.Convert.ToBase64String(buffer);
}
Sie können auch das sehr gute Online-Tool OnlineUtility.in verwenden, um einen String im Base64-Format zu kodieren
Ghazi Hur
Punkte
51
Sameera R.
Punkte
4076
using System;
using System.Text;
public static class Base64Conversions
{
public static string EncodeBase64(this string text, Encoding encoding = null)
{
if (text == null) return null;
encoding = encoding ?? Encoding.UTF8;
var bytes = encoding.GetBytes(text);
return Convert.ToBase64String(bytes);
}
public static string DecodeBase64(this string encodedText, Encoding encoding = null)
{
if (encodedText == null) return null;
encoding = encoding ?? Encoding.UTF8;
var bytes = Convert.FromBase64String(encodedText);
return encoding.GetString(bytes);
}
}
Verwendung
var text = "Beispieltext";
var base64 = text.EncodeBase64();
base64 = text.EncodeBase64(Encoding.UTF8); //oder mit Encoding
Qwertie
Punkte
14996
Für diejenigen, die einfach individuelle Base64-Ziffern codieren/decodieren möchten:
public static int DecodeBase64Digit(char digit, string digit62 = "+-.~", string digit63 = "/_,")
{
if (digit >= 'A' && digit <= 'Z') return digit - 'A';
if (digit >= 'a' && digit <= 'z') return digit + (26 - 'a');
if (digit >= '0' && digit <= '9') return digit + (52 - '0');
if (digit62.IndexOf(digit) > -1) return 62;
if (digit63.IndexOf(digit) > -1) return 63;
return -1;
}
public static char EncodeBase64Digit(int digit, char digit62 = '+', char digit63 = '/')
{
digit &= 63;
if (digit < 52)
return (char)(digit < 26 ? digit + 'A' : digit + ('a' - 26));
else if (digit < 62)
return (char)(digit + ('0' - 52));
else
return digit == 62 ? digit62 : digit63;
}
Es gibt verschiedene Versionen von Base64, die darüber streiten, was für Ziffern 62 und 63 verwendet werden sollen, daher kann DecodeBase64Digit
mehrere davon tolerieren.