Cifrado Base64 de los problemas con el signo porcentaje y el signo igual.
Encripto la misma cadena tanto en el lado del web api (.net core) como en el lado de TypeScript.
Mi cadena: /nombreDeEmpresa/idDeEmpresa
Codificada por el web api: /UVJPTEVTIGluYw==/OTA=/
Codificada por el lado del cliente: /UVJPTEVTIGluYw%3D%3D/OTA%3D/
Entonces, estas cadenas no coinciden. ¿Cuál es la razón de la diferencia entre el signo de igual y el porcentaje? ¿Cómo puedo solucionar este problema?
Utilicé;
btoa
en el lado del cliente
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return System.Convert.ToBase64String(plainTextBytes);
en el lado del web api.
davy.ai
La diferencia entre el signo igual y el signo de porcentaje es que el signo de porcentaje se utiliza para la codificación de URL, mientras que el signo igual se utiliza como un caracter de relleno en la codificación Base64.
Para superar este problema, puedes utilizar la función
encodeURIComponent
en el lado del cliente para codificar correctamente la cadena antes de codificarla en Base64. Esto resultará en una cadena codificada en Base64 segura para URLs que coincide con la cadena codificada en la API web. Alternativamente, puedes utilizar un esquema de codificación diferente que sea compatible tanto con el lado del cliente como con la API web, como la codificación Base64 segura para URLs.