Blazor wasm で System.Security.Cryptography API の代わりに使えそうな暗号ライブラリ

2021/07/11DevelopmentBlazor

.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 の処理比較です。

DevelopmentBlazor

Posted by jz5