パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v0.1.0

serverpod_argon2

Zig標準ライブラリをバックエンドにしたArgon2パスワードハッシュ(argon2id、argon2i、argon2d)。DartおよびFlutter用の事前ビルドされたネイティブライブラリとWeb用のWebAssemblyモジュールを同梱しており、ローカルツールチェーンは不要です...

AndroidiOSLinuxmacOSWebWindows
30日間ダウンロード
14.9万
いいね数
3
Pub ポイント
140

パッケージをインストール

flutter pub add serverpod_argon2

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

Argon2アルゴリズム(argon2id、argon2i、argon2d)を使用した安全なパスワードハッシュ化のためのFlutter/Dartパッケージです。Zig標準ライブラリで構築されており、Android、iOS、Linux、macOS、Windows向けのプリビルドネイティブバイナリおよびWeb環境向けのWebAssemblyモジュールを提供します。ローカルツールチェーンを必要とせず、高いパフォーマンスとセキュリティを実現します。堅牢なパスワード保存および認証が必要なアプリケーションに最適です。

用途

  • 安全なパスワードの保存
  • ユーザー認証システム
  • セキュリティ基準への準拠
  • モバイルおよびWebアプリケーションにおけるパスワードハッシュ化
  • 機密なユーザー資格情報を保護する

主な機能

  • すべてのArgon2バリアントをサポート
  • すべてのプラットフォーム用の事前ビルドされたネイティブライブラリ
  • WebAssembly の Web サポート
  • ローカルのツールチェーンは不要です
  • 高パフォーマンスとセキュリティ

適している対象

  • ユーザーのパスワードを扱うアプリケーション
  • セキュリティを重視したバックエンドサービス
  • クロスプラットフォーム Flutter アプリ
  • 強力なパスワードハッシュが必要なシステム
  • セットアップの容易さを重視する開発者

注意事項

  • Dart 3.0 以上が必要です
  • Argon2 ハッシュのみに制限
  • 外部のZigベースのネイティブコードに依存しています
  • ネイティブバイナリのため、アプリサイズがわずかに増加する可能性があります
  • パスワードハッシュ化以外の用途には適していません

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

serverpod_argon2

Argon2 password hashing for Dart and Flutter, backed by the Argon2 implementation in the Zig standard library.

  • Native platforms load a prebuilt shared library through build hooks (native assets).
  • The web loads the same code compiled to WebAssembly, embedded in the package. This works with both dart2js and dart2wasm.
  • No toolchain is needed. Prebuilt libraries ship in the package for every supported target.

Usage

import 'package:serverpod_argon2/serverpod_argon2.dart';

final argon2 = await Argon2.load();

// $argon2id$v=19$m=19456,t=2,p=1$<salt>$<hash>
final encoded = argon2.hash('correct horse battery staple');

final ok = argon2.verify('correct horse battery staple', encoded);

hash defaults to Argon2Parameters.owasp (argon2id, 19 MiB, 2 iterations) and a random 16 byte salt. verify accepts PHC strings from any Argon2 implementation, as long as they use version 19. deriveKey returns raw bytes and takes the optional RFC 9106 secret and associatedData inputs.

Hashing runs on the calling thread and is slow by design. On native platforms, move it off the main isolate:

final encoded = await Isolate.run(() => argon2.hash(password));
Parallelism

The library is built single-threaded, so the p lanes are computed one after another. Hashes with p > 1 are still correct and compatible with other implementations, but take p times longer than a multithreaded implementation would. For more throughput, hash on several isolates.

Supported targets

OS Architectures
macOS arm64 (11.0+), x64 (10.15+)
iOS arm64 (13.0+), arm64 and x64 simulators
Android arm64, arm, x64
Linux x64, arm64, arm, riscv64
Windows x64, arm64
Web Any browser with WebAssembly

The libraries are pure Zig and link no libc. On Linux they run on any glibc or musl distribution.

Performance

benchmark/argon2_benchmark.dart compares against the pure Dart implementations in pointycastle and cryptography, after checking all three produce identical output. The file header shows how to run it in each mode. Results on an Intel Mac, argon2id with OWASP parameters, in ms per hash:

Implementation Dart JIT Dart AOT JavaScript (Node)
serverpod_argon2 43 46 40
cryptography 200 183 647
pointycastle 307 274 5996

Developing

A git checkout has no prebuilt libraries, so the build hook compiles from source. That needs the zig version in build.zig.zon (minimum_zig_version), either installed directly or through anyzig.

  • zig build test runs the RFC 9106 vectors against the Zig code.
  • dart test -p vm,chrome runs the Dart tests natively and in the browser.

Publishing

See PUBLISH.md.

カテゴリー

依存関係

依存関係一覧 2 件

  • code_assets>=1.2.1 <3.0.0
  • hooks^2.0.0

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。

ランキング