クラス SCryptPasswordEncoder

  • 実装されたすべてのインターフェース:
    PasswordEncoder

    public class SCryptPasswordEncoder
    extends java.lang.Object
    implements PasswordEncoder

    SCrypt ハッシュ関数を使用する PasswordEncoder の実装。クライアントはオプションで、CPU コストパラメーター、メモリコストパラメーター、並列化パラメーターを提供できます。

    いくつかの警告 :

    • 現在の実装では、パスワードクラッカーが行う並列処理 / 最適化を利用しない Bouncy Castle を使用しているため、攻撃者と防御者の間に不必要な非対称性があります。
    • Scrypt は、Salsa20 をベースにしており、Java では(AES と同等)パフォーマンスは低くなりますが、SIMD 対応プラットフォームでは(4-5 倍程度高速)素晴らしいパフォーマンスを発揮します
    • 同意しないものもありますが、読むことを検討してください -Scrypt を推奨しない理由 (パスワード保存用)
    • コンストラクターのサマリー

      コンストラクター  
      コンストラクター 説明
      SCryptPasswordEncoder()
      SCryptPasswordEncoder​(int cpuCost, int memoryCost, int parallelization, int keyLength, int saltLength)
      新しいインスタンスを作成します
    • メソッドのサマリー

      すべてのメソッド   インスタンスメソッド   具象メソッド  
      修飾子と型 メソッド 説明
      java.lang.Stringencode​(java.lang.CharSequence rawPassword)
      生のパスワードをエンコードします。
      booleanmatches​(java.lang.CharSequence rawPassword, java.lang.String encodedPassword)
      ストレージから取得したエンコードされたパスワードが、エンコードされた後に送信された生のパスワードと一致することを確認します。
      booleanupgradeEncoding​(java.lang.String encodedPassword)
      セキュリティを強化するためにエンコードされたパスワードを再度エンコードする必要がある場合は true を返し、そうでない場合は false を返します。
      • クラス java.lang.Object から継承されたメソッド

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • コンストラクターの詳細

      • SCryptPasswordEncoder

        public SCryptPasswordEncoder()
      • SCryptPasswordEncoder

        public SCryptPasswordEncoder​(int cpuCost,
                                     int memoryCost,
                                     int parallelization,
                                     int keyLength,
                                     int saltLength)
        新しいインスタンスを作成します
        パラメーター:
        cpuCost - アルゴリズムの CPU コスト(scrypt で定義されているように、これは N です)。1 より大きい 2 の累乗でなければなりません。デフォルトは現在 16,384 または 2 ^ 14 です)
        memoryCost - アルゴリズムのメモリコスト(scrypt で定義されているとおり、これは r)デフォルトは現在 8 です。
        parallelization - アルゴリズムの並列化(scrypt で定義されているように、これは p)デフォルトは現在 1 です。実装は現在並列化を利用していません。
        keyLength - アルゴリズムのキーの長さ (scrypt で定義されているように、これは dkLen です)。デフォルトは現在 32 です。
        saltLength - ソルトの長さ(scrypt で定義されているように、これは S の長さです)。デフォルトは現在 64 です。
    • メソッドの詳細

      • encode

        public java.lang.String encode​(java.lang.CharSequence rawPassword)
        インターフェースからコピーされた説明: PasswordEncoder
        生のパスワードをエンコードします。一般に、適切なエンコードアルゴリズムは、8 バイト以上のランダムに生成されたソルトと組み合わせた SHA-1 以上のハッシュを適用します。
        次で指定:
        インターフェース PasswordEncoderencode 
      • matches

        public boolean matches​(java.lang.CharSequence rawPassword,
                               java.lang.String encodedPassword)
        インターフェースからコピーされた説明: PasswordEncoder
        ストレージから取得したエンコードされたパスワードが、エンコードされた後に送信された生のパスワードと一致することを確認します。パスワードが一致する場合は true を返し、一致しない場合は false を返します。保管されたパスワード自体は決してデコードされません。
        次で指定:
        インターフェース PasswordEncodermatches 
        パラメーター:
        rawPassword - エンコードおよび照合する生のパスワード
        encodedPassword - 比較するストレージからのエンコードされたパスワード
        戻り値:
        エンコード後の生のパスワードがストレージからのエンコードされたパスワードと一致する場合は true
      • upgradeEncoding

        public boolean upgradeEncoding​(java.lang.String encodedPassword)
        インターフェースからコピーされた説明: PasswordEncoder
        セキュリティを強化するためにエンコードされたパスワードを再度エンコードする必要がある場合は true を返し、そうでない場合は false を返します。デフォルトの実装は常に false を返します。
        次で指定:
        インターフェース PasswordEncoderupgradeEncoding 
        パラメーター:
        encodedPassword - チェックするエンコードされたパスワード
        戻り値:
        セキュリティを強化するためにエンコードされたパスワードを再度エンコードする必要がある場合は true、そうでない場合は false。