pbkdf2 vs bcrypt vs argon2
パスワードハッシュライブラリ
pbkdf2bcryptargon2類似パッケージ:
パスワードハッシュライブラリ

これらのライブラリは、ユーザーのパスワードを安全に保存するためのハッシュ化アルゴリズムを提供します。これにより、データベースに保存されるパスワードが平文でなくなり、セキュリティが向上します。各ライブラリは異なるアルゴリズムと特徴を持っており、用途に応じて選択することが重要です。

npmのダウンロードトレンド
3 年
GitHub Starsランキング
統計詳細
パッケージ
ダウンロード数
Stars
サイズ
Issues
公開日時
ライセンス
pbkdf212,384,99420042.5 kB32ヶ月前MIT
bcrypt2,951,6887,7351.11 MB257ヶ月前MIT
argon2465,5552,0841.03 MB14ヶ月前MIT
機能比較: pbkdf2 vs bcrypt vs argon2

セキュリティ

  • pbkdf2:

    PBKDF2は、反復回数を設定することで、計算コストを調整できますが、Argon2やBcryptに比べると、セキュリティ面で劣るとされています。

  • bcrypt:

    Bcryptは、ソルトを自動的に生成し、ハッシュの計算に時間をかけることで、攻撃者がパスワードを解読するのを困難にします。

  • argon2:

    Argon2は、メモリハードニングを使用しており、攻撃者がハッシュを解読するために必要なリソースを増加させます。これにより、ブルートフォース攻撃に対して非常に強力です。

パフォーマンス

  • pbkdf2:

    PBKDF2は、反復回数を増やすことでセキュリティを高めますが、計算コストが高くなるため、パフォーマンスに影響を与える可能性があります。

  • bcrypt:

    Bcryptは、計算時間を調整できるため、パフォーマンスとセキュリティのバランスを取ることができますが、計算に時間がかかるため、大量のパスワードを処理する場合は注意が必要です。

  • argon2:

    Argon2は、特にメモリ使用量を調整することで、パフォーマンスを最適化できます。これにより、ハードウェアの能力に応じた最適なパフォーマンスを発揮します。

互換性

  • pbkdf2:

    PBKDF2は、特に多くのプラットフォームでサポートされており、既存のシステムとの互換性が高いです。

  • bcrypt:

    Bcryptは、広く採用されているため、多くのプラットフォームやライブラリでサポートされています。

  • argon2:

    Argon2は新しいアルゴリズムであるため、古いシステムとの互換性がない場合がありますが、最新のセキュリティ基準を満たしています。

実装の容易さ

  • pbkdf2:

    PBKDF2は、標準的なライブラリとして広く利用されており、実装が容易です。

  • bcrypt:

    Bcryptは、シンプルなAPIを提供しており、実装が容易であるため、初心者にも適しています。

  • argon2:

    Argon2は、比較的新しいライブラリですが、使いやすく、簡単に実装できます。

コミュニティとサポート

  • pbkdf2:

    PBKDF2は、古典的なアルゴリズムであり、多くの文献やリソースが存在するため、サポートが充実しています。

  • bcrypt:

    Bcryptは長年の実績があり、広範なコミュニティとサポートがあります。

  • argon2:

    Argon2は新しいため、コミュニティはまだ発展途上ですが、セキュリティの専門家からの支持を受けています。

選び方: pbkdf2 vs bcrypt vs argon2
  • pbkdf2:

    PBKDF2は、古典的なハッシュアルゴリズムで、特に多くのプラットフォームでサポートされています。セキュリティ要件がそれほど厳しくない場合や、他のシステムとの互換性が重視される場合に適しています。

  • bcrypt:

    Bcryptは、広く使用されているパスワードハッシュアルゴリズムで、セキュリティが高く、実績があります。特に、古いシステムとの互換性が必要な場合や、既存のbcryptハッシュを使用する場合に適しています。

  • argon2:

    Argon2は、最新のパスワードハッシュアルゴリズムであり、セキュリティとパフォーマンスのバランスが優れています。特に、メモリ使用量を調整できるため、攻撃者がハッシュを解読するのを難しくします。新しいプロジェクトや高いセキュリティが求められる場合に最適です。

pbkdf2 のREADME

pbkdf2 Version Badge

This library provides the functionality of PBKDF2 with the ability to use any supported hashing algorithm returned from crypto.getHashes()

github actions coverage dependency status dev dependency status License Downloads

npm badge

Usage

var pbkdf2 = require('pbkdf2')
var derivedKey = pbkdf2.pbkdf2Sync('password', 'salt', 1, 32, 'sha512')

...

For more information on the API, please see the relevant Node documentation.

For high performance, use the async variant (pbkdf2.pbkdf2), not pbkdf2.pbkdf2Sync; this variant has the oppurtunity to use window.crypto.subtle when browserified.

Credits

This module is a derivative of cryptocoinjs/pbkdf2-sha256, so thanks to JP Richardson for laying the ground work.

Thank you to FangDun Cai for donating the package name on npm, if you're looking for his previous module it is located at fundon/pbkdf2.