Actualmente, en Blazor WebAssembly, el uso de System.Security.Cryptography.Aes falla con el error:
Algorithm 'Aes' is not supported on this platform.
Esto ocurre incluso con configuraciones básicas como:
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = datosKey;
aesAlg.Mode = CipherMode.ECB;
var encryptor = aesAlg.CreateEncryptor(aesAlg.Key, null);
...
}
Mientras que en .NET Server funciona perfectamente.
Problema:
- Blazor WASM no soporta AES nativo, ni siquiera CBC, lo que obliga a usar JavaScript interop con Web Crypto o librerías externas como CryptoJS.
- Esto rompe la consistencia entre plataformas .NET y obliga a duplicar lógica.
Impacto:
- No se puede implementar cifrado simétrico en C# puro en Blazor WASM.
- Se pierde interoperabilidad y seguridad (ECB es inseguro, pero incluso CBC/GCM no están disponibles en C# en WASM).
Solicitud:
- Agregar soporte completo para
System.Security.Cryptography.Aes en Blazor WebAssembly, aprovechando Web Crypto internamente.
- O al menos documentar claramente las limitaciones y ofrecer una API oficial para usar Web Crypto desde C# sin depender de JS interop manual.
Escenario real:
- API REST usa AES para cifrar datos sensibles.
- Cliente Blazor WASM necesita cifrar antes de enviar.
- Hoy, la única opción es usar librerías externas (CryptoJS) o escribir JS interop manual.Mientras que en .NET Server funciona perfectamente. Problema:
- Blazor WASM no soporta AES nativo, ni siquiera CBC, lo que obliga a usar JavaScript interop con Web Crypto o librerías externas como CryptoJS.
- Esto rompe la consistencia entre plataformas .NET y obliga a duplicar lógica.
Impacto:
- No se puede implementar cifrado simétrico en C# puro en Blazor WASM.
- Se pierde interoperabilidad y seguridad (ECB es inseguro, pero incluso CBC/GCM no están disponibles en C# en WASM).
Solicitud:
- Agregar soporte completo para
System.Security.Cryptography.Aes en Blazor WebAssembly, aprovechando Web Crypto internamente.
- O al menos documentar claramente las limitaciones y ofrecer una API oficial para usar Web Crypto desde C# sin depender de JS interop manual.
Escenario real:
- API REST usa AES para cifrar datos sensibles.
- Cliente Blazor WASM necesita cifrar antes de enviar.
- Hoy, la única opción es usar librerías externas (CryptoJS) o escribir JS interop manual.