Blazor wasm で System.Security.Cryptography API の代わりに使えそうな暗号ライブラリ
.NET 5 から Blazor WebAssembly では System.Security.Cryptography API がサポートされません。代わりに使えそうな暗号ライブラリを試してみました。
Bouncy Castle
Bouncy Castle は、Java と C# で提供されている暗号ライブラリ。GitHub リポジトリ bcgit/bc-csharp を fork して、個人が NuGet BouncyCastle.NetCore を公開されています。
※ Blazor で下記の AES・HMAC のコードを動作確認済み
CryptographyHelpers (CryptHash.NET)
CryptHash.NET は、Windows/Linux/Mac で動作するよう設計された .NET Standard 2.0/2.1 の暗号ライブラリ。現在、.NET 5 ライブラリ CryptographyHelpers として移行しています。NuGet でも公開されています。
※ Blazor で動作未確認です
比較: AES
必要だったのが AES と HMAC-SHA 関連のみだったので、それ以外は調べていません。
System.Security.Cryptography
まずは、Blazor WebAssembly で使うには、移行が必要なコードサンプル。Aes コンストラクター (System.Security.Cryptography) | Microsoft Docs のサンプルコードを元にしたコード。
Bouncy Castle
Bouncy Castle を用いたコード。c# - Encrypt string with Bouncy Castle AES/CBC/PKCS7 - Stack Overflow を参考にしています。
CryptHash.NET
CryptHash.NET は、AES の基本の暗号化・複合処理は、抽象クラスの internal メソッドのため全く同じことはできません。パスワードの暗号化や簡潔に書ける便利そうなオーバーロードが、いろいろあるのでオリジナルのコードを読んでみてください。
呼び出しサンプル
上記メソッドを呼び出す部分のコードです。
比較: HMAC
HMAC-SHA-1 の処理比較です。