Es común simplemente intercambiar el alfabeto para usarlo en las URL, por lo que no es necesaria la codificación%; sólo 3 de los 65 caracteres son problemáticos - +
, /
y =
. los reemplazos más comunes están -
en lugar de +
y _
en lugar de /
. En cuanto al acolchado: simplemente quítelo (el =
); puede inferir la cantidad de relleno necesaria. En el otro extremo: simplemente invierta el proceso:
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes)
.TrimEnd(padding).Replace('+', '-').Replace('/', '_');
con:
static readonly char[] padding = { '=' };
y para revertir:
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);
Sin embargo, la pregunta interesante es: ¿ es este el mismo enfoque que utiliza la "biblioteca de códecs común"? Sin duda, sería una primera cosa razonable para probar; este es un enfoque bastante común.
Url.Encode
cuerdaBASE64
?