1

ハッシュ化されたパスワードを生成するために、Java 6、Jasypt、およびBouncyCastleを使用しています。デフォルトのUTF-8文字エンコードを使用してMySQL5.5dbに保存しています。SHA-256ハッシュアルゴリズムと20バイトのRandomSaltGeneratorを使用している場合、VARCHARパスワードフィールドにどのくらいの期間を指定する必要があるかを把握しようとしています。Springアプリケーションのコンテキストでの宣言は次のとおりです。

<beans:bean id="bcProvider" class="org.bouncycastle.jce.provider.BouncyCastleProvider" /> 

<beans:bean id="jasyptStringDigester" class="org.jasypt.digest.StandardStringDigester">
    <beans:property name="algorithm">
        <beans:value>SHA-256</beans:value>
    </beans:property>
    <beans:property name="provider">
        <beans:ref bean="bcProvider" />
    </beans:property>
    <beans:property name="saltGenerator">
        <beans:ref bean="saltGenerator" />
    </beans:property>
    <beans:property name="saltSizeBytes" value="20" />
</beans:bean>

ガイダンスをありがとう、-デイブ

4

1 に答える 1

1

当然のことながら、SHA-256 ハッシュ関数の出力は 256 ビット長です。作成する文字数は、エンコード方法によって異なります。

1 バイトあたり 8 ビットの単純なバイナリ エンコーディングでは 32 バイトになりますが、ハッシュ出力をテキスト フィールドに保存する場合は、おそらく Base64 (1 文字あたり 6 ビット、 4 文字、合計 44 文字) または場合によっては 16 進数 (1 文字あたり 4 ビット、合計 64 文字)。

ハッシュに加えて、パスワード フィールドには、それを再構築するために必要なソルトも含まれているのが一般的です。これにより、正確なパスワードハッシュスキーム、出力エンコーディング、および選択したパラメーター (など) に応じて、追加の文字数が追加されますsaltSizeBytes

とにかく、パスワード ハッシュ メソッドの出力長が明示的に文書化されていない場合、それを見つける最も簡単な方法は、いくつかのテスト パスワードを入力して、それが返すものを確認することです。(通常、出力は一定の長さである必要があります。) 次に、必要に応じて、念のためデータベース定義にマージンを追加します。

ああ、Waleed Khan が指摘しているように、実際にはPBKDF2などのキー ストレッチングを実装するパスワード ハッシュ メソッドを使用する必要があります。

于 2013-01-05T01:49:15.387 に答える